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

Python 튜플에서 인접 요소 쌍별 덧셈 수행하기

Python 튜플에서 쌍별(Pairwise) 덧셈 구현하기

튜플의 인접한 요소들을 쌍으로 묶어 더해야 하는 경우, zip 메서드와 tuple 메서드, 그리고 제너레이터 표현식을 함께 활용하면 간단하게 처리할 수 있습니다.

zip 메서드는 여러 개의 이터러블(iterable)을 인자로 받아, 각 이터러블의 요소들을 하나씩 짝지어 튜플 형태로 집계한 뒤 그 결과를 반환합니다.

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

tuple 메서드는 주어진 이터러블을 튜플(tuple) 데이터 타입으로 변환하는 역할을 합니다.

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

예제 코드

my_tuple = (67, 45, 34, 56, 99, 123, 0, 56)

print("The tuple is : ")
print(my_tuple)

my_result = tuple(i + j for i, j in zip(my_tuple, my_tuple[1:]))

print("The tuple after addition is : ")
print(my_result)

실행 결과

The tuple is :
(67, 45, 34, 56, 99, 123, 0, 56)
The tuple after addition is :
(112, 79, 90, 155, 222, 123, 56)

코드 설명

  • 먼저 튜플을 하나 생성한 뒤 콘솔에 출력합니다.
  • 원본 튜플과 첫 번째 요소를 제외한 슬라이스(my_tuple[1:])를 zip 메서드로 묶습니다. 이렇게 하면 인접한 두 요소끼리 순서대로 짝이 됩니다.
  • 제너레이터 표현식을 사용해 각 쌍의 값을 더하고, 그 결과를 tuple 메서드로 변환하여 변수에 할당합니다.
  • 마지막으로 해당 변수를 콘솔에 출력합니다.

핵심은 zip(my_tuple, my_tuple[1:]) 부분입니다. 원본 튜플과 한 칸씩 앞당겨진 튜플을 나란히 묶으면 (67, 45), (45, 34), (34, 56)처럼 인접 요소의 쌍이 만들어지며, 이를 모두 더하면 결과 튜플의 길이는 원본보다 하나 작아집니다.