2014-11-16 72 views
0

可以說我有三個列表:如何創建的元組元素的列表

List1 = [1,2,3] 
List2 = [4,5,6] 
List3 = [7,8,9] 

現在我想創建一個元組元素的新名單,但是從我以前的列表使用數據:

NewList = [(1,4,7), (2,5,6), (3,6,9)] 

這怎麼辦?

+1

的可能重複[Python的 - 合併兩個列表項爲元組的列表(http://stackoverflow.com/questions/2407398/python-merge-items-of-two-lists-into-列表的元組) –

回答

1

所有你需要的是zip

>>> List1 = [1,2,3] 
>>> List2 = [4,5,6] 
>>> List3 = [7,8,9] 
>>> zip(*(List1, List2, List3)) 
[(1, 4, 7), (2, 5, 8), (3, 6, 9)] 
>>> 

此外,您會發現,第二元組的第三個要素是不同的。我認爲你的問題有一個錯字。

+0

+1的'zip' ..!也感謝關注! – Kasramvd

+0

感謝iCodez。還有什麼我設置「zip(*(List1,List2,List3))」,另一個列表?因爲如果我這樣做,我打印它,我得到「」 – rozzster

0

彷彿性能對您很重要的一個備選答案,我建議使用itertools.izip,而不是內置zip()

>>> l=[List1,List2,List3] 
>>> from itertools import izip 
>>> list(izip(*l)) 
[(1, 4, 7), (2, 5, 8), (3, 6, 9)] 
+1

OP說他想要一個元組列表。 'zip'函數已經做到了這一點。爲什麼導入一個函數只是爲了得到相同的結果?如果不將結果轉換爲列表,'itertools.izip'只會更有效。 – iCodez

+0

@iCodez嗯,我認爲你的權利,因爲我看到'izip'對我自己的良好表現,我只是想給出一個很好的建議,但對於這個問題,它更有效地使用'zip'! – Kasramvd

0

這是不這樣做,只是作爲一種替代的最佳途徑。

>>> NewList = [] 
>>> i = 0 
>>> while i <= len(List1)-1 : 
     NewList.append(tuple(j[i] for j in (List1, List2, List3))) 
     i+=1 
>>>NewList 
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]