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

Python에서 튜플 요소 간 XOR 연산 수행하는 방법

두 개의 튜플에 대해 요소별로 XOR 연산을 수행해야 하는 경우, zip 메서드와 제너레이터 표현식(generator expression)을 활용하면 간단하게 처리할 수 있습니다.

zip 메서드는 여러 이터러블(iterable)을 인자로 받아, 각 이터러블의 동일한 위치에 있는 요소들을 하나의 튜플로 묶어 집계한 후 그 결과를 반환합니다.

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

아래 예제를 통해 실제 동작 방식을 확인해 보겠습니다.

예제 코드

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

print("The first tuple is : ")
print(my_tuple_1)
print("The second tuple is : ")
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("The XORed tuple value is : ")
print(my_result)

실행 결과

The first tuple is :
(7, 8, 3, 4, 3, 2)
The second tuple is :
(9, 6, 8, 2, 1, 0)
The XORed tuple value is :
(14, 14, 11, 6, 2, 2)

코드 설명

  • 두 개의 튜플을 정의한 뒤 콘솔에 출력하여 확인합니다.
  • zip 메서드를 사용해 두 튜플을 순회하면서 같은 위치의 요소들을 하나씩 짝지어 묶습니다.
  • 묶인 각 요소 쌍에 대해 ^ 연산자를 사용해 XOR 연산을 수행합니다.
  • 연산 결과들을 tuple() 함수로 다시 튜플 형태로 변환합니다.
  • 최종 결과를 변수에 할당합니다.
  • 해당 변수를 콘솔에 출력하여 결과를 확인합니다.

정리

이처럼 zip과 제너레이터 표현식을 조합하면 별도의 반복문 없이도 한 줄의 코드로 두 튜플의 요소별 XOR 연산을 깔끔하게 처리할 수 있습니다. 비트 연산이 필요한 데이터 처리 작업에서 유용하게 활용할 수 있는 패턴이니 기억해 두면 좋습니다.