可能重复:
Python 中的转置/解压缩函数
我有一个元组列表,我想将这个列表解压缩成两个独立的列表。我正在寻找 Python 中的一些标准化操作。
>>> l = [(1,2), (3,4), (8,9)]
>>> f_xxx (l)
[ [1, 3, 8], [2, 4, 9] ]
我正在寻找一种简洁和pythonic的方式来实现这一点。
基本上,我正在寻找zip()
函数的逆运算。
可能重复:
Python 中的转置/解压缩函数
我有一个元组列表,我想将这个列表解压缩成两个独立的列表。我正在寻找 Python 中的一些标准化操作。
>>> l = [(1,2), (3,4), (8,9)]
>>> f_xxx (l)
[ [1, 3, 8], [2, 4, 9] ]
我正在寻找一种简洁和pythonic的方式来实现这一点。
基本上,我正在寻找zip()
函数的逆运算。
使用zip(*list)
:
>>> l = [(1,2), (3,4), (8,9)]
>>> list(zip(*l))
[(1, 3, 8), (2, 4, 9)]
该zip()
函数将来自所有输入的元素配对,从第一个值开始,然后是第二个值,等等。通过使用,*l
您将所有元组l
作为单独的参数应用到f zip()
unction,因此与firstzip()
配对,然后与and配对。这些恰好与列或.1
3
8
2
4
9
l
zip()
产生元组;如果您必须有可变列表对象,只需列表map()
的元组或使用列表推导来生成列表列表:
map(list, zip(*l)) # keep it a generator
[list(t) for t in zip(*l)] # consume the zip generator into a list of lists
如果你想要一个列表列表:
>>> [list(t) for t in zip(*l)]
[[1, 3, 8], [2, 4, 9]]
如果元组列表没问题:
>>> zip(*l)
[(1, 3, 8), (2, 4, 9)]