Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬에서 튜플 더하기: map과 lambda 함수 활용 방법

파이썬에서 두 개의 튜플을 요소별로 더해야 할 때는 map 함수와 lambda(람다) 함수를 함께 사용하면 간단하게 해결할 수 있습니다.

map 함수란?

map 함수는 리스트나 튜플처럼 순회 가능한(iterable) 자료구조의 모든 요소에 지정된 함수나 연산을 일괄적으로 적용하는 내장 함수입니다. 파이썬 3에서는 그 결과가 맵 객체로 반환되기 때문에, 필요에 따라 tuple()이나 list()로 변환하여 사용하는 것이 일반적입니다.

lambda(람다) 함수란?

람다 함수는 이름 없이 정의되는 익명 함수입니다. 보통 파이썬에서 함수는 def 키워드로 정의하지만, 람다 함수는 lambda 키워드를 사용해 한 줄로 간결하게 작성할 수 있습니다. 람다는 하나의 표현식만 담을 수 있지만 인자는 원하는 만큼 받을 수 있으며, 그 표현식의 계산 결과를 곧바로 반환합니다.

예제 코드

my_tuple_1 = (11, 14, 54, 56, 87)
my_tuple_2 = (98, 0, 10, 13, 76)

print("첫 번째 튜플은 : ")
print(my_tuple_1)
print("두 번째 튜플은 : ")
print(my_tuple_2)

my_result = tuple(map(lambda i, j: i + j, my_tuple_1, my_tuple_2))

print("요소를 더한 후의 튜플은: ")
print(my_result)

실행 결과

첫 번째 튜플은 :
(11, 14, 54, 56, 87)
두 번째 튜플은 :
(98, 0, 10, 13, 76)
요소를 더한 후의 튜플은:
(109, 14, 64, 69, 163)

코드 설명

  • 두 개의 튜플을 정의한 뒤 콘솔에 출력합니다.
  • lambda 함수가 두 튜플의 각 요소에 적용되며, map 메서드가 두 요소를 더하는 연산을 전체에 걸쳐 매핑합니다.
  • 그 결과를 tuple()로 변환해 다시 튜플 형태로 만듭니다.
  • 변환된 결과를 변수에 할당합니다.
  • 최종 결과를 콘솔에 출력합니다.

대안: zip을 활용한 방법

zip과 제너레이터 표현식을 조합하면 동일한 결과를 더 직관적인 코드로 얻을 수 있습니다.

my_result = tuple(i + j for i, j in zip(my_tuple_1, my_tuple_2))
print(my_result)  # (109, 14, 64, 69, 163)

또한 operator 모듈의 add 함수를 사용하면 람다 없이도 같은 연산을 수행할 수 있습니다.

from operator import add

my_result = tuple(map(add, my_tuple_1, my_tuple_2))
print(my_result)  # (109, 14, 64, 69, 163)

상황에 맞게 map + lambda, zip, operator.add 중 편리한 방식을 선택해 사용하면 됩니다.