어쨌든 다음과 같이 작동하도록 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])
.
답변
지도 대신 생성기 이해도를 사용할 수 있습니다. 내장 된지도 기능은 구식이 아니지만 대부분의 사람들이 목록 / 생성기 / 딕셔너리 이해보다 가독성이 떨어지기 때문에 일반적으로지도 기능을 사용하지 않는 것이 좋습니다.
tuple(p+q for p, q in zip(a, b))
답변
튜플을 반환하는 클래스 정의가없는 간단한 솔루션
import operator
tuple(map(operator.add,a,b))