【问题标题】:zip unknown number of lists with Python for more than one list使用 Python 压缩未知数量的列表以获取多个列表
【发布时间】:2016-08-29 20:38:41
【问题描述】:

我需要做一些与这里How would you zip an unknown number of lists in Python? 要求的非常相似的事情,但在更一般的情况下。

我有以下设置:

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)

不工作。

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

【问题讨论】:

    标签: python list zip


    【解决方案1】:

    itertools.chain 救援:

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

    【讨论】:

    • 谢谢以色列!我需要开始更频繁地使用itertools
    • 不客气。事实上,itertools 包含一些有用的功能,如groupbyproductpermutationscombinations 等等。很棒的模块,基于生成器。
    猜你喜欢
    • 2010-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-09
    • 1970-01-01
    • 2011-11-20
    • 1970-01-01
    相关资源
    最近更新 更多