2011-10-18 219 views
3

beginner to python here。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(列表2)的

+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__,...)'。 (+1不堅持列表推導,其中'map()'更具可讀性。) –

0

如果內部列表/元組中的順序並不重要,你可以使用數學集操作。

打印[元組(一組(一)|組(B))爲A,B在拉鍊(X,Y)]

該組的(a)|組(b)中轉換的iterables a和b設置並採取兩套的結合。然後按照輸出格式將它們轉換回元組。

由於您是python的初學者,強烈建議掌握列表解析。它太強大而簡潔。除了使你的代碼更「pythonic」,列表解析可以作爲一個友好的替代'地圖'和'過濾器'功能。