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

파이썬에서 튜플 요소 간 모듈로(나머지) 연산 수행하기

두 개의 튜플에 대해 요소별 나머지(모듈로) 연산 결과를 구해야 할 경우, 파이썬의 'zip' 메서드제너레이터 표현식(generator expression)을 함께 사용하면 간결하게 처리할 수 있습니다.

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

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

zip 메서드는 여러 개의 반복 가능한(iterable) 객체를 인자로 받아, 동일한 위치의 요소들을 하나의 튜플로 묶어주고 그 결과를 반환합니다. 이를 활용하면 두 튜플의 대응하는 요소들을 한 번에 꺼내 연산할 수 있습니다.

예제 코드

my_tuple_1 = (67, 45, 34, 56)
my_tuple_2 = (99, 123, 10, 56)

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

my_result = tuple(elem_1 % elem_2 for elem_1, elem_2 in zip(my_tuple_1, my_tuple_2))

print("나머지 연산 결과 튜플 : ")
print(my_result)

실행 결과

첫 번째 튜플 :
(67, 45, 34, 56)
두 번째 튜플 :
(99, 123, 10, 56)
나머지 연산 결과 튜플 :
(67, 45, 4, 0)

코드 설명

  • 두 개의 튜플을 정의한 뒤 콘솔에 출력하여 확인합니다.
  • zip() 메서드로 두 튜플을 묶고, 제너레이터 표현식을 통해 각 요소 쌍을 순회합니다.
  • 순회 과정에서 첫 번째 튜플의 각 요소와 두 번째 튜플의 대응 요소에 대해 %(모듈로) 연산을 수행합니다.
  • 연산 결과들을 tuple() 함수로 튜플 형태로 변환한 후 변수에 저장합니다.
  • 해당 변수를 콘솔에 출력하면 최종 결과를 확인할 수 있습니다.

정리

이 방법은 별도의 반복문 없이 한 줄의 제너레이터 표현식만으로 요소별 나머지 연산을 처리할 수 있어 코드가 간결하고 가독성이 좋습니다. 특히 데이터 분석이나 수치 계산에서 여러 시퀀스를 병렬로 다룰 때 zip()과 제너레이터 조합은 매우 유용하게 활용됩니다.