0

我有一个清单

a = [[1,2],[3,4],[5,6],[7,8],[9,10]]

结果

New_a = [[1,3,5,7,9],[2,4,6,8,10]]

有什么聪明的方法或者python内置函数可以解决这个问题吗?

4

3 回答 3

7
list(zip(*a))
Out[6]: [(1, 3, 5, 7, 9), (2, 4, 6, 8, 10)]

解释:zip接受两个或多个可迭代对象并将它们缝合在一起,其中“第 i 个元素来自第 i 个可迭代参数”。星号运算符解包a,以便您将元素压缩在一起,而不是子列表。

于 2013-11-01T02:06:06.753 回答
2

您可以zip与展平运算符一起使用*

[list(t) for t in zip(*a)]

zip(*a)如果 (1) 您使用的是 Python 2 并且 (2) 您不介意获取元组列表而不是列表列表,您也可以单独使用。

于 2013-11-01T02:12:06.410 回答
1
import numpy as np
a = np.array([[1,2],[3,4],[5,6],[7,8],[9,10]])

结果:

>>> a
array([[ 1,  2],
       [ 3,  4],
       [ 5,  6],
       [ 7,  8],
       [ 9, 10]])
>>> a.T
array([[ 1,  3,  5,  7,  9],
       [ 2,  4,  6,  8, 10]])
于 2013-11-01T02:25:27.803 回答