相同长度元组的值相加
我在用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,它对数组的支持更强大,性能也更好。