从相同长度的元组中添加值

新手上路,请多包涵

在我使用 pygame 编写的图形程序中,我使用一个表示坐标的元组,如下所示:(50, 50)。

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

将变化值添加到坐标值的最佳方法是什么。如果我能做类似 coordinate += change 的事情就好了,但看起来只是将两个元组连接成类似 (50, 50, 3, -5) 的东西。而不是将第一个值添加到第一个值并将第二个值添加到第二个值,然后返回结果元组。

直到现在我一直在使用这个相当烦人的方法:coord = (coord[0] + change[0], coord[1] + change[1])

什么是将两个相同长度的元组的值加在一起的更好、更简洁的方法。如果元组具有任意长度或特别长的长度,那么知道如何执行此操作似乎尤为重要,这会使之前的方法更加令人厌烦。

原文由 Keegan Jay 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 420
2 个回答

好吧,一种方法是

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

如果您要进行大量数学运算,则可能需要研究使用 NumPy ,它具有更强大的数组支持和更好的性能。

原文由 John Y 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

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

原文由 Kenan Banks 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题