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

Python에서 중첩 튜플 요소 합산하기: zip과 제너레이터 표현식 활용법

중첩된 튜플(튜플 안의 튜플)의 각 요소끼리 덧셈 연산을 수행해야 할 때는 zip 메서드제너레이터 표현식을 활용하면 간결하게 처리할 수 있습니다.

제너레이터란?

제너레이터는 이터레이터(iterator)를 손쉽게 만들 수 있는 방법입니다. 내부적으로 __iter__()__next__() 메서드가 구현된 클래스를 자동으로 생성하고, 내부 상태를 스스로 관리합니다. 또한 반환할 값이 더 이상 없을 때는 StopIteration 예외를 발생시켜 순회를 종료합니다.

zip 메서드란?

zip 메서드는 여러 개의 이터러블(iterable)을 인자로 받아, 각 이터러블의 요소들을 묶어 튜플 형태로 집계한 뒤 그 결과를 반환합니다. 이 특성 덕분에 두 개의 중첩 튜플을 위치별로 짝지어 처리할 때 매우 유용합니다.

예제 코드

my_tuple_1 = ((7, 8), (3, 4), (3, 2))
my_tuple_2 = ((9, 6), (8, 2), (1, 4))

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

my_result = tuple(tuple(a + b for a, b in zip(tup_1, tup_2))
    for tup_1, tup_2 in zip(my_tuple_1, my_tuple_2))
print("합산 후의 튜플 : ")
print(my_result)

실행 결과

첫 번째 튜플 :
((7, 8), (3, 4), (3, 2))
두 번째 튜플 :
((9, 6), (8, 2), (1, 4))
합산 후의 튜플 :
((16, 14), (11, 6), (4, 6))

코드 설명

  • 두 개의 중첩 튜플(튜플의 튜플)을 정의하고 콘솔에 출력합니다.
  • zip으로 두 튜플을 짝지은 뒤 반복하면서, 각 내부 튜플의 대응되는 요소들을 서로 더하고 새로운 튜플의 튜플을 생성합니다.
  • 연산 결과는 변수에 할당됩니다.
  • 최종 결과가 콘솔에 출력됩니다.

마무리

이처럼 zip과 제너레이터 표현식을 조합하면 별도의 반복문 없이 한 줄의 표현식만으로 중첩 튜플의 요소별 합산을 깔끔하게 처리할 수 있습니다. 행렬 형태의 데이터 연산이나 좌표 계산 등 다양한 상황에서 활용할 수 있는 유용한 패턴이니 꼭 기억해 두세요.