为多个列表使用Python压缩未知数量的列表

为多个列表使用Python压缩未知数量的列表,python,list,zip,Python,List,Zip,我需要做一些非常类似于这里被问到的事情,但是在更一般的情况下 我有以下设置: a = [['a', '0', 'b', 'f', '78']] b = [['3', 'w', 'hh', '12', '8']] c = [['g', '7', '1', 'a0', '9'], ['45', '4', 'fe', 'h', 'k']] 我需要将这些列表压缩在一起以获得: abc = [['a', '3', 'g', '45'], ['0', 'w', '7', '4'], ['b', 'hh'

我需要做一些非常类似于这里被问到的事情,但是在更一般的情况下

我有以下设置:

a = [['a', '0', 'b', 'f', '78']]
b = [['3', 'w', 'hh', '12', '8']]
c = [['g', '7', '1', 'a0', '9'], ['45', '4', 'fe', 'h', 'k']]
我需要将这些列表压缩在一起以获得:

abc =  [['a', '3', 'g', '45'], ['0', 'w', '7', '4'], ['b', 'hh', '1', 'fe'], ['f', '12', 'a0', 'h'], ['78', '8', '9', 'k']]
我可以通过以下方式生成:

zip(a[0], b[0], c[0], c[1])
但是列表
a、b、c
包含许多子列表,这些子列表在连续运行时会有所不同,因此这种“手动”扩展它们的方式不起作用

我能得到的最接近的结果是:

zip(a[0], b[0], *c)
由于不允许将带有
*
的列表解包到最后一个位置以外的任何其他位置,因此“理想”表达式:

zip(*a, *b, *c)
不起作用


如何将多个列表与未知数量的子列表压缩在一起?

itertools.chain
解救:

import itertools

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

itertools.chain
救援:

import itertools

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

谢谢以色列!我需要开始更频繁地使用
itertools
。不客气。事实上,itertools包含一些有用的函数,如
groupby
product
置换
组合
等等。伟大的模块,基于发电机。谢谢以色列!我需要开始更频繁地使用
itertools
。不客气。事实上,itertools包含一些有用的函数,如
groupby
product
置换
组合
等等。很棒的模块,基于生成器。