将二维数组合并成元组。

3

我想把两个二维数组合并成一个NX2的数组,但我不知道在Python中应该使用哪个命令。例如,a = [1,2,3] b = [4,5,6],我希望有一个新的数组,其中a中的元素作为x坐标,b作为y坐标,c = [(1,4)],(2,5),(3,6)]

请问有没有在Python语言中实现的提示?

2个回答

6

你很幸运,因为Python有一个内置的zip函数,正是你想要的。

>>> a = [1, 2, 3]
>>> b = [4, 5, 6]
>>> zip(a, b)
[(1, 4), (2, 5), (3, 6)]

请注意,在Python 3中,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


也许需要注意长度相等的情况? - Jon Clements

0
你可以使用zip函数。
    x = [1,2,3,4]
    y = [1,2,3,4]
    nodes = [zip(x,y)]

使用zip()函数在list()函数内部来获取列表。否则它将打印如下内容:
[<zip object at 0x0000024AE84502C0>]

不要这样做,改为这种方式

nodes = list(zip(x,y))

它将要打印

[(1, 1), (2, 2), (3, 3), (4, 4)]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接