从相同长度的元组添加值

Kee*_*Jay 18 python

在我使用pygame编写的图形程序中,我使用代表如下坐标的元组:(50,50).

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

将更改值添加到坐标值的最佳方法是什么.如果我可以做一些像坐标+ =更改这样的东西会很好,但似乎只是将两个元组连接成类似(50,50,3,-5)的东西.而不是将第一个值添加到第一个值和第二个到第二个,并返回一个结果元组.

到目前为止,我一直在使用这种相当无聊的方法:coord =(coord [0] + change [0],coord [1] + change [1])

什么是更好,更简洁的方法来将两个相同长度的元组的值相加.如果元组具有任意长度或特别长的长度会使先前的方法更加无聊,那么知道如何做到这一点似乎尤为重要.

Joh*_*n Y 25

好吧,有一种方法

coord = tuple(sum(x) for x in zip(coord, change))
Run Code Online (Sandbox Code Playgroud)

如果您正在进行大量的数学运算,您可能需要使用NumPy进行调查,NumPy具有更强大的阵列支持和更好的性能.


Tri*_*ych 13

列表理解可能更具可读性,但这是另一种方式:

>>> a = (1,2)
>>> b = (3,4)
>>> tuple(map(sum,zip(a,b)))
(4,6)
Run Code Online (Sandbox Code Playgroud)

  • 我碰巧发现理解/生成器表达式更具可读性,但我确信那些思维工作更"蓬勃发展"的人会发现地图解决方案更清晰. (2认同)

Tom*_*oth 8

正如 John Y 所提到的,使用 numpy 这很容易。

import numpy as np

x1 = (0,3)
x2 = (4,2)
tuple(np.add(x1,x2))
Run Code Online (Sandbox Code Playgroud)

  • 唯一理解的答案,OP 所说的“简洁方法”是什么意思 (2认同)