我有一个清单
a = [[1,2],[3,4],[5,6],[7,8],[9,10]]
结果
New_a = [[1,3,5,7,9],[2,4,6,8,10]]
有什么聪明的方法或者python内置函数可以解决这个问题吗?
list(zip(*a))
Out[6]: [(1, 3, 5, 7, 9), (2, 4, 6, 8, 10)]
解释:zip
接受两个或多个可迭代对象并将它们缝合在一起,其中“第 i 个元素来自第 i 个可迭代参数”。星号运算符解包a
,以便您将元素压缩在一起,而不是子列表。
您可以zip
与展平运算符一起使用*
:
[list(t) for t in zip(*a)]
zip(*a)
如果 (1) 您使用的是 Python 2 并且 (2) 您不介意获取元组列表而不是列表列表,您也可以单独使用。
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]])