可能重复:
转置/解压缩功能在Python
我有元组,在这里我要解压缩此列表分为两个独立的名单列表。 我正在寻找在Python一些规范运作。
>>> l = [(1,2), (3,4), (8,9)]
>>> f_xxx (l)
[ [1, 3, 8], [2, 4, 9] ]
我在寻找一个简洁和Python的方式来实现这一目标。
基本上,我打猎的逆运算zip()
函数。
可能重复:
转置/解压缩功能在Python
我有元组,在这里我要解压缩此列表分为两个独立的名单列表。 我正在寻找在Python一些规范运作。
>>> l = [(1,2), (3,4), (8,9)]
>>> f_xxx (l)
[ [1, 3, 8], [2, 4, 9] ]
我在寻找一个简洁和Python的方式来实现这一目标。
基本上,我打猎的逆运算zip()
函数。
使用zip(*list)
:
>>> l = [(1,2), (3,4), (8,9)]
>>> list(zip(*l))
[(1, 3, 8), (2, 4, 9)]
所述zip()
函数对向上从所有输入的元件,从所述第一值,则第二等。通过使用*l
你申请的所有元组在l
作为独立参数的zip()
函数 ,所以zip()
对高达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]]
如果一个元组列表是OK:
>>> zip(*l)
[(1, 3, 8), (2, 4, 9)]