如何将元组列表解压缩为单个列表?

< p > 可能的重复: < br > Python中的转置/解压缩函数 < / p >

我有一个元组列表,我想把这个列表解压缩成两个独立的列表。我正在寻找Python中的一些标准化操作。

>>> l = [(1,2), (3,4), (8,9)]
>>> f_xxx (l)
[ [1, 3, 8], [2, 4, 9] ]

我正在寻找一种简洁而python的方法来实现这一点。

基本上,我正在寻找zip()函数的逆操作。

228010 次浏览

如果你想要一个列表的列表:

>>> [list(t) for t in zip(*l)]
[[1, 3, 8], [2, 4, 9]]

如果一个元组列表是OK的:

>>> zip(*l)
[(1, 3, 8), (2, 4, 9)]

使用zip(*list):

>>> l = [(1,2), (3,4), (8,9)]
>>> list(zip(*l))
[(1, 3, 8), (2, 4, 9)]

*l2将所有输入的元素配对,从第一个值开始,然后是第二个值,等等。通过使用*l你可以*l3,因此zip()首先将138配对,然后将24*l0配对。这些恰好与列或l*l4很好地对应。

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