2016-08-29 10 views
0

我需要做一些非常類似於在這裏提出的問題How would you zip an unknown number of lists in Python?,但是在一個更一般的情況下。用Python處理多個列表的未知列表數量不止一個列表

我有以下設置:

a = [['a', '0', 'b', 'f', '78']] 
b = [['3', 'w', 'hh', '12', '8']] 
c = [['g', '7', '1', 'a0', '9'], ['45', '4', 'fe', 'h', 'k']] 

我需要這些列表壓縮在一起,以獲得:

zip(a[0], b[0], c[0], c[1]) 

但:

abc = [['a', '3', 'g', '45'], ['0', 'w', '7', '4'], ['b', 'hh', '1', 'fe'], ['f', '12', 'a0', 'h'], ['78', '8', '9', 'k']] 

,我可以用產生名單a,b,c包含許多子列表,這些子列表對於連續運行會有所不同,所以這個「人ual「擴展它們的方式將不起作用。

我能得到的最接近的是:

zip(a[0], b[0], *c) 

自比過去的任何其他職位拆包與*名單是不允許的,「理想」的表達:

zip(*a, *b, *c) 

不工作。

我該如何將許多列表與未知數量的子列表一起壓縮?

回答

5

itertools.chain救援:

import itertools 

z = list(zip(*itertools.chain(a, b, c))) 
+1

謝謝以色列!我需要更頻繁地使用'itertools'。 – Gabriel

+0

不客氣。事實上,itertools包含一些有用的功能,比如'groupby','product','permutations','combinations'等等。偉大的模塊,基於發電機。 –

相關問題