2011-09-05 138 views
26

元組的名單上有兩個列表:蟒蛇:創建列表

x = ['1', '2', '3'] 
y = ['a', 'b', 'c'] 

,我需要創建這些列表元組的列表,如下所示:

z = [('1','a'), ('2','b'), ('3','c')] 

我試圖做它像這樣:

z = [ (a,b) for a in x for b in y ] 

但導致:

[('1', '1'), ('1', '2'), ('1', '3'), ('2', '1'), ('2', '2'), ('2', '3'), ('3', '1'), ('3', '2'), ('3', '3')] 

即x中每個元素的元組列表,以及y中的每個元素......做我想做的事情的正確方法是什麼?謝謝...

編輯:編輯之前提到的另外兩個副本是我的錯,縮進它在錯誤的另一個for循環...

+3

這個問題已經被問:http://stackoverflow.com/questions/2407398/python-merge-items-of-two-lists-into-列表元組 – mwan

+0

Mea Culpa,在搜索中找不到那個,謝謝:) – amyassin

回答

38

使用內置函數zip()

z = zip(x,y) 
10

您在尋找zip builtin的功能。 來自文檔:

>>> x = [1, 2, 3] 
>>> y = [4, 5, 6] 
>>> zipped = zip(x, y) 
>>> zipped 
[(1, 4), (2, 5), (3, 6)]