我需要做一些非常类似于这里问的内容你如何在Python中压缩未知数量的列表?,但在更一般的情况下.
我有以下设置:
a = [['a', '0', 'b', 'f', '78']]
b = [['3', 'w', 'hh', '12', '8']]
c = [['g', '7', '1', 'a0', '9'], ['45', '4', 'fe', 'h', 'k']]
Run Code Online (Sandbox Code Playgroud)
我需要将这些列表压缩在一起以获得:
abc = [['a', '3', 'g', '45'], ['0', 'w', '7', '4'], ['b', 'hh', '1', 'fe'], ['f', '12', 'a0', 'h'], ['78', '8', '9', 'k']]
Run Code Online (Sandbox Code Playgroud)
我可以生成:
zip(a[0], b[0], c[0], c[1])
Run Code Online (Sandbox Code Playgroud)
但是这些列表a,b,c包含许多子列表,这些子列表对于连续运行会有所不同,因此这种扩展它们的"手动"方式将不起作用.
我能得到的最接近的是:
zip(a[0], b[0], *c)
Run Code Online (Sandbox Code Playgroud)
由于*不允许使用除最后一个位置之外的任何其他位置解压缩列表,因此"理想"表达式:
zip(*a, *b, *c)
Run Code Online (Sandbox Code Playgroud)
不起作用.
我怎样才能将一些列表与未知数量的子列表压缩在一起?
itertools.chain 救援:
import itertools
z = list(zip(*itertools.chain(a, b, c)))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
554 次 |
| 最近记录: |