Python에서 튜플로 이루어진 리스트의 각 요소 합계를 구해야 할 때는 리스트 컴프리헨션(list comprehension)과 sum() 메서드를 조합하면 매우 간결하게 처리할 수 있습니다.
리스트는 정수, 실수, 문자열 등 서로 다른 데이터 타입의 값을 함께 저장할 수 있는 유연한 자료구조입니다. 튜플 리스트란 말 그대로 하나의 리스트 안에 여러 개의 튜플이 담겨 있는 형태를 의미합니다.
리스트 컴프리헨션은 리스트를 반복(iterate)하면서 특정 연산을 수행할 수 있게 해주는 축약형 문법입니다. 한편, sum() 메서드는 반복 가능한(iterable) 객체를 인자로 받아 해당 요소들을 모두 더한 값을 반환합니다.
아래 예제를 통해 실제 동작 과정을 확인해 보겠습니다.
예제 코드
my_list = [('Hi', [45, 67, 21]), ('There', [45, 32, 1]), ('Jane', [59, 13])]
print("The list is : ")
print(my_list)
my_result = [(key, sum(lst)) for key, lst in my_list]
print("The list of tuple after summation is : ")
print(my_result)
실행 결과
The list is :
[('Hi', [45, 67, 21]), ('There', [45, 32, 1]), ('Jane', [59, 13])]
The list of tuple after summation is :
[('Hi', 133), ('There', 78), ('Jane', 72)]
코드 설명
- 먼저 문자열 키와 정수 리스트를 가지는 튜플들로 구성된 리스트를 정의한 뒤 콘솔에 출력합니다.
- 리스트 컴프리헨션을 통해 리스트를 순회하면서, 각 튜플의 두 번째 요소인 정수 리스트를 sum()으로 모두 더합니다.
- 연산 결과는 (키, 합계) 형태의 새로운 튜플로 만들어지며, 이들이 모여 새로운 리스트가 완성됩니다.
- 최종 결과는 변수 my_result에 저장된 후 콘솔에 출력됩니다.
대체 방법: 일반 for 반복문 사용
리스트 컴프리헨션이 익숙하지 않다면 아래와 같이 일반적인 for 반복문으로도 동일한 결과를 얻을 수 있습니다.
my_result = []
for key, lst in my_list:
my_result.append((key, sum(lst)))
print(my_result)
# [('Hi', 133), ('There', 78), ('Jane', 72)]
두 방식 모두 동일한 결과를 반환하지만, 리스트 컴프리헨션을 사용하면 코드가 더 간결하고 가독성이 좋아집니다. 데이터 집계나 전처리 작업에서 자주 활용되는 패턴이므로 익혀두면 유용합니다.