我想将任意大小的2个元组值相加,并创建一个输出元组。 例如:组合2个不同元组值的最佳方式
a = (1,4)
b = (2,3)
输出:(3,7)
有没有更好的办法做到这一点的不仅仅是:
output = (a[0] + b[0], a[1]+b[1])
我想将任意大小的2个元组值相加,并创建一个输出元组。 例如:组合2个不同元组值的最佳方式
a = (1,4)
b = (2,3)
输出:(3,7)
有没有更好的办法做到这一点的不仅仅是:
output = (a[0] + b[0], a[1]+b[1])
如何使用生成器表达式?
output = tuple(a[i] + b[i] for i in range(len(a)))
如果你不知道,元组是相同的长度,你可以尝试使用一些更花哨像zip
(这将在较短的元组的长度停止),或itertools.izip
(这将让你来控制如何处理不同长度的元组)。
tuple(x+y for (x,y) in zip(a,b))
如果你想坚持2元组,你有什么罚款(也许最好)。您可能会考虑使用不同的数据结构,其中+
运算符以元素方式添加。例如:
complex
数增加像2向量(使用.real
和.imag
组件)numpy
阵列Point
类,覆盖了__add__
魔术方法如果您不要以一种不需要你拼出所有元素的方式去做,去做一些功能:
output = tuple(map(sum, zip(a,b)))
,或者一个列表,补偿你,再次,必须提供给tuple
:
output = tuple([i+j for i,j in zip(a,b)])
你总是可以用zip_longest
从itertools
替代zip
,使用0
填充值,如果尺寸可能会有所不同。
tuple(map(lambda x, y: x + y, a, b))
当给出答案时,最好给出[关于为什么你的答案的一些解释](http://stackoverflow.com/help/how-to-answer)。 –
import operator
tuple(map(operator.add, a, b))
请说明,如果你问“2元组”,因为你有2个元素,或“2元组”元组意味着你加入了对元组。 – wim