2017-05-27 91 views
0

我想創建一個代碼來查找樹中最快的方式,但我在獲取輸入時遇到了問題。 輸入存在於節點數量之外,後面跟着每個節點的相鄰節點的行,最後一行是開始和結束節點的一行。將多行輸入放入單獨的列表中,Python

6 
1 4 
0 2 4 
1 3 
2 4 5 
0 1 3 
3 
0 3 

這將是6,節點和節點0將與節點1和4,與節點0,節點2和節點4連接在節點1等連接,並且我們希望找到從節點的路徑0到節點3

到目前爲止,我有

numberofnodes=int(input()) 
no_of_lines = numberofnodes 
lines = "" 
for i in range(numberofnodes): 
    lines+=input()+"\n" 
startfinish=(input().split()) 

如果我打印的節點,線路和startfinish數我得到

6 
1 4 
0 2 4 
1 3 
2 4 5 
0 1 3 
3 

['0', '3'] 

我一直在嘗試獲取列表中的節點的鄰居,所以我的代碼的其餘部分工作,但我遇到了麻煩。我試過的所有東西都將它們全部放在1個列表中,但我希望它們在單獨的列表中。

+0

其餘的代碼在哪裏? –

+0

我不清楚你想達到什麼目的。如果你想把輸入放在列表中,你爲什麼要連接到一個字符串?你的清單應該是什麼樣子? 'my_list = [[6],[1,4],[0,2,4],...]'可能? – roganjosh

回答

0

首先,找到最快的(你可能意味着最短)的方式(路徑)在樹上是無稽之談,因爲只有1路到每個節點。您可能想在圖表上做到這一點(treegraph的特殊類型)。

術語放在一邊,開始與空單 lines = [],將容納其他列表。 在你的週期,你還需要爲你的最後一個做分割線,並且可能會解釋字符串作爲數字是有用的。 U可以使用append將項目添加到列表中,請參閱documentation

lines = [] 
for i in range(numberofnodes): 
    line = [] 
    for word in input().split(): 
     line.append(int(word)) 
    lines.append(line) 

印刷lines(現在列出的名單,即嵌套列表)輸出如下:

[[1, 4], [0, 2, 4], [1, 3], [2, 4, 5], [0, 1, 3], [3]] 

看一看上列出了一些基本的Python教程,和你的工作方式到困難演習逐漸地,在你完全理解如何使用列表之前,不要嘗試編寫難題。