将二维数组合并为元组

3 投票
2 回答
2824 浏览
提问于 2025-04-17 19:17

我想把两个二维数组合并成一个NX2的数组,但我不知道在Python中应该用什么命令。比如,a = [1, 2, 3] b = [4, 5, 6],我想得到一个新数组,里面的元素是a作为x坐标,b作为y坐标,结果是c = [(1, 4), (2, 5), (3, 6)]

有没有什么提示可以在Python中实现这个?

2 个回答

0

你可以使用 zip 函数。

    x = [1,2,3,4]
    y = [1,2,3,4]
    nodes = [zip(x,y)]

在 list() 里面使用 zip() 来获取列表。否则,它会打印成这样,

[<zip object at 0x0000024AE84502C0>]

你可以这样做

nodes = list(zip(x,y))

它会打印出

[(1, 1), (2, 2), (3, 3), (4, 4)]
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

撰写回答