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

Python에서 중첩 튜플의 열별 누적 곱 계산하기

중첩 튜플(nested tuple)의 열별 누적 곱을 구해야 하는 경우, zip 메서드와 중첩 제너레이터 표현식을 활용하면 간단하게 해결할 수 있습니다.

제너레이터와 zip 메서드란?

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

zip 메서드는 여러 개의 이터러블(iterable)을 인자로 받아, 동일한 인덱스의 요소들을 묶어 튜플 형태로 반환합니다. 이를 활용하면 두 중첩 튜플의 대응하는 요소들을 쉽게 짝지어 연산할 수 있습니다.

예제 코드

tuple_1 = ((11, 23), (41, 25), (22, 19))
tuple_2 = ((60, 73), (31, 91), (14, 14))

print("첫 번째 튜플 : ")
print(tuple_1)
print("두 번째 튜플 : ")
print(tuple_2)

my_result = tuple(tuple(a * b for a, b in zip(tup_1, tup_2))
    for tup_1, tup_2 in zip(tuple_1, tuple_2))

print("곱셈 결과 튜플 : ")
print(my_result)

실행 결과

첫 번째 튜플 :
((11, 23), (41, 25), (22, 19))
두 번째 튜플 :
((60, 73), (31, 91), (14, 14))
곱셈 결과 튜플 :
((660, 1679), (1271, 2275), (308, 266))

코드 설명

  • 두 개의 중첩 튜플(튜플 안에 튜플이 있는 구조)을 정의하고, 콘솔에 출력하여 확인합니다.
  • zip 함수로 두 튜플을 짝지은 뒤 반복하면서, 대응하는 위치의 값들을 서로 곱합니다.
  • 연산 결과를 다시 튜플로 변환하여 변수에 할당합니다.
  • 해당 변수를 콘솔에 출력하여 최종 결과를 확인합니다.

이처럼 zip과 제너레이터 표현식을 조합하면 별도의 반복문 없이도 간결하고 가독성 좋은 코드로 중첩 자료구조의 요소별 연산을 처리할 수 있습니다.