< p > 可能的重复: < br > Python中的转置/解压缩函数 < / p >
我有一个元组列表,我想把这个列表解压缩成两个独立的列表。我正在寻找Python中的一些标准化操作。
>>> l = [(1,2), (3,4), (8,9)] >>> f_xxx (l) [ [1, 3, 8], [2, 4, 9] ]
我正在寻找一种简洁而python的方法来实现这一点。
基本上,我正在寻找zip()函数的逆操作。
zip()
如果你想要一个列表的列表:
>>> [list(t) for t in zip(*l)] [[1, 3, 8], [2, 4, 9]]
如果一个元组列表是OK的:
>>> zip(*l) [(1, 3, 8), (2, 4, 9)]
使用zip(*list):
zip(*list)
>>> l = [(1,2), (3,4), (8,9)] >>> list(zip(*l)) [(1, 3, 8), (2, 4, 9)]
*l2将所有输入的元素配对,从第一个值开始,然后是第二个值,等等。通过使用*l你可以*l3,因此zip()首先将1与3与8配对,然后将2与4和*l0配对。这些恰好与列或l的*l4很好地对应。
*l
1
3
8
2
4
l
zip()产生元组;如果你必须有可变列表对象,只需map()元组到列表或使用列表推导生成列表的列表:
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