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() functionzip()138,然后是249.这些恰好与列或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

Python相关问答推荐

Django序列化器没有验证或保存数据

在Docker中运行HAProxy时无法获得503服务

如何匹配3D圆柱体的轴和半径?

将从Python接收的原始字节图像数据转换为C++ Qt QIcon以显示在QStandardProject中

inspect_asm不给出输出

将HLS纳入媒体包

如何根据另一列值用字典中的值替换列值

Select 用a和i标签包裹的复选框?

通过Selenium从页面获取所有H2元素

对所有子图应用相同的轴格式

所有列的滚动标准差,忽略NaN

使用NeuralProphet绘制置信区间时出错

将JSON对象转换为Dataframe

如果满足某些条件,则用另一个数据帧列中的值填充空数据帧或数组

实现神经网络代码时的TypeError

用渐近模计算含符号的矩阵乘法

合并帧,但不按合并键排序

Tkinter菜单自发添加额外项目

为什么np. exp(1000)给出溢出警告,而np. exp(—100000)没有给出下溢警告?

Flash只从html表单中获取一个值