如何将两个等长元组成对求和

时间:2010-09-27 10:01:28

标签: python tuples

如何获得两个相等长度元组的成对和?例如,如果我有(0,-1,7)和(3,4,-7)我想要(3,3,0)作为答案。

4 个答案:

答案 0 :(得分:12)

tuple(map(lambda (x, y): x + y, zip((0,-1,7), (3,4,-7))))

如果您希望避免maplambda,则可以执行以下操作:

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)))

参考:zipmapsum

答案 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)

缺点:需要更多数据准备。在大多数情况下可能会有点过分。

优点:操作非常明确且孤立。对于大元组来说可能非常快。