例如,如果这些是我的两个列表:
a=[1,2,3,4,5]
b=[6,7,8,9,10]
然后,我想要做的就是找到一种方法:
c=[[1,6],[2,7],[3,8],[4,9],[5,10]]
对不起,可能是基本的问题。如果这会产生影响,那么它们就是numpy数组。
答案 0 :(得分:3)
如果您想要一个numpy数组,可以使用array.T
构建它:
In [15]: a=np.array([1,2,3,4,5])
In [16]: b=np.array([6,7,8,9,10])
In [17]: np.array([a,b]).T
Out[17]:
array([[ 1, 6],
[ 2, 7],
[ 3, 8],
[ 4, 9],
[ 5, 10]])
答案 1 :(得分:2)
一种方法是使用列表理解和zip
:
>>> [[i, j] for i, j in zip(a,b)]
[[1, 6], [2, 7], [3, 8], [4, 9], [5, 10]]
答案 2 :(得分:1)
答案 3 :(得分:1)
只需使用np.transpose
:
>>> np.transpose([a, b])
array([[ 1, 6],
[ 2, 7],
[ 3, 8],
[ 4, 9],
[ 5, 10]])
如果您想将结果作为列表,请稍后调用tolist()
:
>>> np.transpose([a, b]).tolist()
[[1, 6], [2, 7], [3, 8], [4, 9], [5, 10]]
答案 4 :(得分:0)
这会给你你想要的东西。
a = [1,2,3,4,5]
b = [6,7,8,9,10]
c = [list(x) for x in zip(a, b)]
答案 5 :(得分:0)
d = []
for i in range(0, 5):
d.append([a[i], b[i])
是一种使用元素对创建新2D列表的简单方法。像其他人指出的那样使用zip()函数也是可行的。
答案 6 :(得分:0)
有多种方法可以做到这一点。
zip
如果您只需要访问元素而不修改它们,则可以使用zip(a, b)
>[(1, 6), (2, 7), (3, 8), (4, 9), (5, 10)]
函数:
[[a[i], b[i]] for i in range(len(a))]
>[[1, 6], [2, 7], [3, 8], [4, 9], [5, 10]]
如果您确实需要列表列表,则可以使用列表解析:
import numpy as np
np.concatenate([[a], [b]]).T
>array([[1, 6],
[2, 7],
[3, 8],
[4, 9],
[5, 10]])
最后,如果您需要一个numpy数组,请使用Transpose函数:
chromium-browser
答案 7 :(得分:0)
我非常确定有比这更简单或更pythonic的方式。
list(zip(a,b)
这会输出一个列表列表,而不是仅输出一个输出元组列表的[[i,j] for i,j in zip(a,b)]
。这结合了列表理解和zip
还避免了zip(*iterables)
不确定哪些更有效率
{{1}}创建一个迭代器,聚合来自每个迭代的元素。
答案 8 :(得分:0)
没有库,您可以使用:
a = [1,2,3,4,5]
b = [6,7,8,9,10]
c = [[a[i],b[i]] for i in range(len(a))]