相同长度元组的值相加

27 投票
6 回答
28003 浏览
提问于 2025-04-15 13:06

我在用pygame写一个图形程序时,使用一个元组来表示坐标,比如说(50, 50)。

有时候,我会调用一个函数,它返回另一个元组,比如(3, -5),这个元组表示坐标的变化。

那么,怎样才能把这个变化值加到原来的坐标上呢?我希望能像这样写:coordinate += change,但这样做似乎只是把两个元组拼在一起,变成(50, 50, 3, -5)。而我其实想要的是把第一个值加到第一个值上,第二个值加到第二个值上,然后返回一个新的元组。

到目前为止,我一直在用这种比较麻烦的方法:
coord = (coord[0] + change[0], coord[1] + change[1])

有没有更好、更简洁的方法来把两个相同长度的元组的值加在一起?如果元组的长度不固定或者特别长,那之前的方法就会显得更麻烦,这种情况下知道怎么做就显得特别重要了。

6 个回答

13

正如John Y提到的,使用numpy来做这个其实非常简单。

import numpy as np

x1 = (0,3)
x2 = (4,2)
tuple(np.add(x1,x2))
19

列表推导式可能更容易理解,但这里还有另一种方法:

>>> a = (1,2)
>>> b = (3,4)
>>> tuple(map(sum,zip(a,b)))
(4,6)
35

好吧,有一种方法是

coord = tuple(sum(x) for x in zip(coord, change))

如果你需要做很多数学运算,可能可以考虑使用 NumPy,它对数组的支持更强大,性能也更好。

撰写回答