2016-05-23 115 views
0

我是一個python新手。在python中,試圖將列表中的元素組合到一個新的組合元素列表中

我有一個列表的列表:

test=[[1,2,3],[4,5,6],[7,8,9],[10,11,12]] 

我想,這樣我得到的結果每個列表的元素結合起來:

result = [[1,4,7,10],[2,5,8,11],[3,6,9,12]] 

我要尋找一個解決方案,爲n個元素工作,答案是列表清單(元組列表不適用於我)。理想情況下,我想測試有n個元素,而不是一個確定的數字。

我希望下面將工作:

result = map(zip,test) 

但事實並非如此。

有沒有一個簡單的方法來做到這一點?

+0

它看起來好像你想用列表做矢量函數嗎?映射和壓縮的範圍受限於簡單的列表函數。如果你想要更復雜的功能考慮使用集合。 – SkyLeach

+0

@普蘭,我不這麼認爲。那是指一個元組列表作爲答案。我特意尋找列表作爲答案。 –

+0

區別在於簡單的類型轉換操作。我覺得這個問題的重要部分是** zip(* test)**見解。我選擇了上述問題作爲最容易說明這種見解的問題。 – Prune

回答

2
result = map(list, zip(*test)) 
+0

謝謝。這給了我列表的元素。 –

3

您並不尋找map()

您正在尋找zip()與拆包,此功能不正是你想要什麼:

result = zip(*test) 
# [(1, 4, 7, 10), (2, 5, 8, 11), (3, 6, 9, 12)] 

如果你真的需要一個列表的列表,在那裏,你可以使用map()

result = map(list, zip(*test)) 
# [[1, 4, 7, 10], [2, 5, 8, 11], [3, 6, 9, 12]] 

注如果您使用的是Python 3,zip()map()不再返回list,那麼您可能需要用list()轉換來包裝整個表達式。

+0

謝謝!我忘記了星號。 :-) –

相關問題