将二维数组合并为元组
我想把两个二维数组合并成一个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
。