如何获得两个相等长度元组的成对和?例如,如果我有(0,-1,7)和(3,4,-7)我想要(3,3,0)作为答案。
答案 0 :(得分:12)
tuple(map(lambda (x, y): x + y, zip((0,-1,7), (3,4,-7))))
如果您希望避免map
和lambda
,则可以执行以下操作:
tuple(x + y for x,y in zip((0,-1,7), (3,4,-7)))
编辑:正如其中一个答案所指出的,您可以使用sum而不是显式拆分zip
返回的元组。因此,您可以重写上面的代码示例,如下所示:
tuple(sum(t) for t in zip((0,-1,7), (3,4,-7)))
答案 1 :(得分:6)
使用sum():
>>> tuple(sum(pair) for pair in zip((0,-1,7), (3,4,-7)))
或
>>> tuple(map(sum, zip((0,-1,7), (3,4,-7))))
答案 2 :(得分:4)
>>> t1 = (0,-1,7)
>>> t2 = (3,4,-7)
>>> tuple(i + j for i, j in zip(t1, t2))
(3, 3, 0)
答案 3 :(得分:3)
或者(如果你有非常大的元组,或者你打算用它们做其他的数学运算,那就很好):
> import numpy as np
> t1 = (0, -1, 7)
> t2 = (3, 4, -7)
> at1 = np.array(t1)
> at2 = np.array(t2)
> tuple(at1 + at2)
(3, 3, 0)
缺点:需要更多数据准备。在大多数情况下可能会有点过分。
优点:操作非常明确且孤立。对于大元组来说可能非常快。