2011-10-18 15 views
3

初心者からpythonここに。Python:ネストされたリストをマージする

私はマージする2つのネストされたリストがあります:私は探していますが出力される

list1 = ['a', 
     (b, c), 
     (d, e), 
     (f, g, h) ] 

list2 = [(p,q), 
     (r, s), 
     (t), 
     (u, v, w) ] 

を:

list3 = [(a, p, q), 
     (b, c, r, s), 
     (d, e, t), 
     (f, g, h, u, v, w) ] 

することは、これは任意の外部ライブラリなしで行うことができますか? 注記:LEN(リスト1)= LEN(LIST2)の

+3

* beginner to python here。* - これは、[チュートリアル](http://docs.python.org/tutorial/)を読む必要があることを意味します。 –

+1

こんにちは。私はツナを読んだ。私は単純なリストをマージする方法を知っています。しかし、ネストされたリストをどのように使うべきか分かりません。 –

+0

また、 'list1'の最初の要素はあなたの例では文字列ですが、マージ後はオブジェクトのようです。 –

答えて

12

使用電源zip機能とlist comprehensions

list1 = [('a',), 
     ('b', 'c'), 
     ('d', 'e'), 
     ('f', 'g', 'h') ] 

list2 = [('p', 'q'), 
     ('r', 's'), 
     ('t',), 
     ('u', 'v', 'w') ] 

print [a + b for a, b in zip(list1, list2)] 
+0

ありがとうございます。私のために働く。 –

2
from operator import add 
list3 = map(add, list1, list2) 
+0

試したことはありませんが、助けてくれてありがとうございます。 –

+0

また、インポートを避けたい場合は、 'map(tuple .__ add__、...)'を実行してください。 ( 'map()'が読みやすいリスト内包を主張しないため+1)。 –

0

内側のリスト/タプル内の順序が重要でない場合は、あなたを数学的集合演算を使用することができる。

プリント[タプル(組(A)|セット(B))のために、ZIP(X、Y)におけるB]

セット(A)|セット(b)はイテラブルAおよびBを変換2つのセットの和集合を設定します。それらは出力形式で必要に応じてタプルに変換されます。

あなたはPythonの初心者であるため、リストの解説をマスターすることを強くお勧めします。それはあまりにも強力で簡潔です。あなたのコードをより「ピジョンソニック」にすることに加えて、リスト内包表記は、「マップ」と「フィルタ」機能のより好ましい置換えとして機能します。

関連する問題