辞書を使わずにリスト内の値をタプルに接続しようとしています。Python: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')]
及びIは、ランダムタプルの値でリストを作成したい:
newList = ['1', '0']
最初場合adjListからタプルの第2の値を追加し、具体的に、私はこのリストを持っていますそのタプルの値、したがって、newListの最後の値と同じである。
newList = ['1', '0', '3']
[削除( '1'、 '0')と( '0'、 '3')adjListから。
THEN 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のタプルがなくなるまで、コードの最後のブロックをどのように繰り返すのかどうかはわかりません。
ご協力いただきありがとうございます。
?無作為に選択されたタプルが '( '9'、 '6')' 'newList'の正しい値とは何でしょうか? – niemmi
newListの正しい値は['9'、 '6'、 '5']となります。一致する値を持つ最初のタプルを取得するだけで問題ありません。 – Andrade
ランダムなノードを選択しないと、デバッグが簡単になるでしょう。 –