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

Python 튜플 리스트에서 combinations와 sum으로 요소 조합 더하기

튜플 리스트에서 각 튜플의 합(sum) 조합을 구해야 하는 경우, itertools 모듈의 combinations 메서드와 리스트 컴프리헨션(list comprehension)을 함께 사용하면 간단하게 해결할 수 있습니다.

combinations 메서드란?

combinations 메서드는 입력으로 전달된 이터러블(iterable)에서 지정한 길이 'r'만큼의 부분 수열(subsequence)을 반환합니다. 생성되는 조합은 사전순(lexicographic order)으로 정렬되어 출력되며, 입력 이터러블의 순서를 기준으로 정렬된 상태로 표시됩니다.

리스트와 튜플 리스트의 개념

파이썬의 리스트(list)는 정수, 실수, 문자열 등 서로 다른 데이터 타입의 값을 하나의 자료구조에 저장할 수 있는 이질적(heterogeneous) 컨테이너입니다.

튜플 리스트(list of tuple)란 이름 그대로 여러 개의 튜플을 리스트로 감싸놓은 형태를 의미합니다. 예를 들어 좌표 쌍이나 복합 데이터를 다룰 때 자주 활용됩니다.

예제 코드

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

from itertools import combinations

my_list = [(67, 45), (34, 56), (99, 123), (10, 56)]

print("The list of tuple is : ")
print(my_list)

my_result = [(b1 + a1, b2 + a2) for (a1, a2), (b1, b2) in combinations(my_list, 2)]

print("The summation combination result is : ")
print(my_result)

실행 결과

The list of tuple is :
[(67, 45), (34, 56), (99, 123), (10, 56)]
The summation combination result is :
[(101, 101), (166, 168), (77, 101), (133, 179), (44, 112), (109, 179)]

코드 설명

  • 먼저 튜플 리스트를 정의하고, 콘솔에 출력하여 확인합니다.
  • combinations 메서드에 두 번째 인자로 2를 전달하여, 리스트에서 두 개씩 짝지은 부분 수열을 생성합니다.
  • 리스트 컴프리헨션을 통해 각 조합의 두 튜플을 언패킹(unpacking)한 뒤, 첫 번째 요소끼리, 두 번째 요소끼리 각각 더합니다.
  • 계산된 결과 값은 변수 my_result에 저장됩니다.
  • 최종적으로 해당 변수의 값을 콘솔에 출력합니다.

4개의 튜플에서 2개씩 선택하는 조합은 총 6가지(C(4,2)=6)이므로, 결과 역시 6개의 튜플이 반환되는 것을 확인할 수 있습니다.