Possible Duplicate:
A Transpose/Unzip Function in Python
我有一个元组列表,我想把这个列表解压成两个独立的列表.我正在寻找Python中的一些标准化操作.
>>> l = [(1,2), (3,4), (8,9)]
>>> f_xxx (l)
[ [1, 3, 8], [2, 4, 9] ]
我正在寻找一种简洁而通俗的方法来实现这一点.
基本上,我在寻找zip()
函数的逆运算.
Possible Duplicate:
A Transpose/Unzip Function in Python
我有一个元组列表,我想把这个列表解压成两个独立的列表.我正在寻找Python中的一些标准化操作.
>>> l = [(1,2), (3,4), (8,9)]
>>> f_xxx (l)
[ [1, 3, 8], [2, 4, 9] ]
我正在寻找一种简洁而通俗的方法来实现这一点.
基本上,我在寻找zip()
函数的逆运算.
使用zip(*list)
:
>>> l = [(1,2), (3,4), (8,9)]
>>> list(zip(*l))
[(1, 3, 8), (2, 4, 9)]
zip()
function对来自所有输入的元素进行配对,从第一个值开始,然后是第二个值,以此类推.通过使用*l
you apply all tuples in l
as separate arguments to the zip()
function,zip()
对1
对3
对8
,然后是2
对4
和9
.这些恰好与列或l
中的transposition对应.
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