我想把两个二维数组合并成一个NX2的数组,但我不知道在Python中应该使用哪个命令。例如,a = [1,2,3] b = [4,5,6]
,我希望有一个新的数组,其中a中的元素作为x坐标,b作为y坐标,c = [(1,4)],(2,5),(3,6)]
请问有没有在Python语言中实现的提示?
我想把两个二维数组合并成一个NX2的数组,但我不知道在Python中应该使用哪个命令。例如,a = [1,2,3] b = [4,5,6]
,我希望有一个新的数组,其中a中的元素作为x坐标,b作为y坐标,c = [(1,4)],(2,5),(3,6)]
请问有没有在Python语言中实现的提示?
你很幸运,因为Python有一个内置的zip
函数,正是你想要的。
>>> a = [1, 2, 3]
>>> b = [4, 5, 6]
>>> zip(a, b)
[(1, 4), (2, 5), (3, 6)]
zip
返回的是一个迭代器而不是列表,因此您需要使用list(zip(a, b))
来获取一个列表。zip
将结果的长度截断为最小列表的长度。>>> zip([1, 2], [3, 4, 5])
[(1, 3), (2, 4)]
itertools.izip_longest
(或在Python 3中使用itertools.zip_longest
)来解决这个问题。>>> import itertools
>>> list(itertools.izip_longest([1, 2], [3, 4, 5], fillvalue=0))
[(1, 3), (2, 4), (0, 5)]
这将使用fillvalue
来填充空缺的部分。默认情况下,fillvalue
设置为None
。
x = [1,2,3,4]
y = [1,2,3,4]
nodes = [zip(x,y)]
[<zip object at 0x0000024AE84502C0>]
不要这样做,改为这种方式
nodes = list(zip(x,y))
它将要打印
[(1, 1), (2, 2), (3, 3), (4, 4)]