파이썬에서 두 개의 튜플을 요소별로 나누어야 할 때는 zip 메서드와 제너레이터 표현식을 함께 사용하면 간단하게 처리할 수 있습니다.
핵심 개념
zip 메서드는 여러 개의 이터러블(iterable)을 인자로 받아, 각 이터러블의 요소들을 하나씩 묶어 튜플 형태로 집계한 뒤 그 결과를 반환합니다. 이를 활용하면 두 튜플의 같은 위치에 있는 요소들을 손쉽게 짝지을 수 있습니다.
제너레이터(Generator)는 이터레이터를 간단하게 만들 수 있는 방법입니다. 내부적으로 __iter__()와 __next__() 메서드가 구현된 클래스를 자동으로 생성하고, 내부 상태를 추적합니다. 더 이상 반환할 값이 없으면 StopIteration 예외를 발생시켜 순회를 종료합니다.
예제 코드
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(elem_1 // elem_2 for elem_1, elem_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) 나눗셈 결과 튜플 : (0, 1, 0, 2, 3, 0)
코드 설명
- 두 개의 튜플을 정의하고 콘솔에 출력합니다.
- zip 메서드를 사용해 두 튜플의 요소들을 위치별로 짝지어 순회합니다.
- 각 단계에서 첫 번째 튜플의 요소를 두 번째 튜플의 해당 요소로
//(정수 나눗셈) 연산자를 사용해 나눕니다. - 연산 결과들을
tuple()함수로 변환해 하나의 튜플로 만듭니다. - 결과를 변수에 저장한 후 콘솔에 출력합니다.
참고 사항
// 연산자는 정수 나눗셈(버림 나눗셈)을 수행하므로 소수점 이하는 버려집니다. 예를 들어 7 // 9의 결과는 0입니다. 실수 나눗셈 결과가 필요하다면 / 연산자를 대신 사용하면 됩니다. 또한 두 번째 튜플에 0이 포함되어 있으면 ZeroDivisionError가 발생하므로, 필요하다면 조건문으로 미리 검사하는 것이 안전합니다.