我想連接列表中的元組中的值而不使用字典。具體而言,我有這樣的名單:Python:使用while或循環遍歷列表
adjList = [('0', '3'), ('1', '0'), ('3', '2'), ('4', '2'), ('5', '4'), ('7', '9'),
('8', '7'), ('9', '6'), ('2', '1'), ('2', '6'), ('6', '5'), ('6', '8')]
,我想創建一個隨機元組的值的列表:
newList = ['1', '0']
然後從adjList如果第一個追加一個元組的第二個值該元組的值是相同的newList的最後一個值,即:
newList = ['1', '0', '3']
然後刪除( '1', '0')和( '0', '3')從adjList。
那麼我想重複這個動作,直到newList NO LONGER中的最後一個值對應於來自adjList的元組的第一個值。我在計算while或for循環的邏輯組合時遇到了很多麻煩,可以做到這一點,任何幫助,將不勝感激。
我迄今爲止代碼:
adjList = [('0', '3'), ('1', '0'), ('3', '2'), ('4', '2'), ('5', '4'), ('7', '9'),
('8', '7'), ('9', '6'), ('2', '1'), ('2', '6'), ('6', '5'), ('6', '8')]
firstNode = random.choice(adjList)
newList = []
newList.append(firstNode[0])
newList.append(firstNode[1])
adjList.remove(firstNode)
## I need to repeat the following block of code:
for ax,bx in adjList:
if newList[-1] == ax:
adjList.remove((ax,bx))
newList.append(bx)
break
一切正常的方式應該,當然,我只是在最後得到的newList 3倍的值。我無法完全解決如何重複最後一塊代碼,直到我用完adjList中的元組。
在此先感謝您的幫助。
什麼,那裏有許多可能的元組'adjList'選擇的情況下?假設隨機選擇的元組是'('9','6')'newList'的正確值是什麼? – niemmi
newList的正確值將是['9','6','5']。把第一個元組與匹配值相聯繫就可以了。 – Andrade
我想如果你不選擇一個隨機節點,調試會更容易。 –