我想將任意大小的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