[python] sum과 같은 Python 요소 별 튜플 연산

어쨌든 다음과 같이 작동하도록 Python에서 튜플 작업을 얻을 수 있습니까?

>>> a = (1,2,3)
>>> b = (3,2,1)
>>> a + b
(4,4,4)

대신에:

>>> a = (1,2,3)
>>> b = (3,2,1)
>>> a + b
(1,2,3,3,2,1)

__add____mul__메서드가 그렇게 작동하도록 정의되어 있기 때문에 그렇게 작동한다는 것을 알고 있습니다 . 그래서 유일한 방법은 그것들을 재정의하는 것입니까?



답변

import operator
tuple(map(operator.add, a, b))


답변

모든 내장 사용 ..

tuple(map(sum, zip(a, b)))


답변

이 솔루션에는 가져 오기가 필요하지 않습니다.

tuple(map(lambda x, y: x + y, tuple1, tuple2))


답변

처음 두 답변을 결합하여 ironfroggy의 코드를 조정하여 튜플을 반환합니다.

import operator

class stuple(tuple):
    def __add__(self, other):
        return self.__class__(map(operator.add, self, other))
        # obviously leaving out checking lengths

>>> a = stuple([1,2,3])
>>> b = stuple([3,2,1])
>>> a + b
(4, 4, 4)

참고 : self.__class__대신 사용하여 stuple하위 클래스를 쉽게 만들 수 있습니다.


답변

from numpy import *

a = array( [1,2,3] )
b = array( [3,2,1] )

print a + b

제공합니다 array([4,4,4]).

참조 http://www.scipy.org/Tentative_NumPy_Tutorial를


답변

지도 대신 생성기 이해도를 사용할 수 있습니다. 내장 된지도 기능은 구식이 아니지만 대부분의 사람들이 목록 / 생성기 / 딕셔너리 이해보다 가독성이 떨어지기 때문에 일반적으로지도 기능을 사용하지 않는 것이 좋습니다.

tuple(p+q for p, q in zip(a, b))


답변

튜플을 반환하는 클래스 정의가없는 간단한 솔루션

import operator
tuple(map(operator.add,a,b))