2011-07-26 22 views
-1

でリストをマージ:Pythonの:私はリストを持っているリスト

packets=[['B', 'A'], ['B', 'C'], ['A', 'D'], ['C', 'D'], ['C', 'E'], ['D', 'E'], []] 

私は同じリスト上のループ用の2つのようなものがあります:すべての['B','A']から

for a in packets[:]: 
    for b in packets[:]: 

すなわち、毎回a=['B','A']b繰り返し処理を道順は['D','E']です。 aの最後の要素は、私が['B','A','D']を持っている必要がありますa=['B','A']b=['A','D']bすなわちの最初の要素、に等しい場合

:これは私が何をしたいです。再び['B','A','D']の最後の要素は、['D','E']の最初の要素と同じです。だから今は['B','C','D','E']が必要です。

同様に、A=['B','C']b=['C','E']の場合は、['B','C','E']が必要です。 A=['B','C']b=['C','D']b=['D','E']の場合は、['B','C','D','E']などが必要です。

アイデア?

+0

が最後に '[]'要素の目的は何であるかどうかわかりませんか?リストには独自の長さが分かっているため、Pythonで反復処理のためのセンチネルは必要ありません。 –

+2

既に書かれたコードがある場合は、投稿してください(コードとして書式を設定してください)。また、最初に['B'、 'A'、 'D'、 'E']を意味しますか? – Jodaka

+2

[['A'、 'B']、['B'、 'C​​']、['C'、 'D']]をお持ちの場合はどうなりますか?出力に['A'、 'B'、 'C​​']と['A'、 'B'、 'D']の両方が欲しいですか? [['A'、 'B']、['B'、 'A']]のようなサイクルがある場合はどうなりますか? –

答えて

2

これが何をしたいですが、

>>> packets=[['B', 'A'], ['B', 'C'], ['A', 'D'], ['C', 'D'], ['C', 'E'], ['D', 'E'], []] 
>>> 
>>> for a in packets: 
...  for b in packets: 
...   if a and b and a[-1]==b[0]: 
...    print a[:-1]+b 
...    packets.append(a[:-1]+b) 
... 
['B', 'A', 'D'] 
['B', 'C', 'D'] 
['B', 'C', 'E'] 
['A', 'D', 'E'] 
['C', 'D', 'E'] 
['B', 'A', 'D', 'E'] 
['B', 'C', 'D', 'E'] 
+0

私はこの答えでは分かりませんが、[['B'、 'A'、 'D'、 'E']の '['B'、 'A'、 'D'] ' 'と同様のケース。そして、質問の奇妙な言葉の選択から、それが望んでいるかどうかを言うことは非常に困難です。また、これはリストにループが存在しないことを前提としています。そうでなければ、無限ループに陥っています( 'packets '[' B '、' A ']、[' A '、B']]'。もう一度、問題があるかどうかを知る方法はありません – Jodaka

+1

@Jodaka、あなたが言うように、質問は詳細を除外しています。 –

関連する問題