튜플 리스트(리스트 안에 튜플들이 담긴 자료구조)의 모든 요소를 한 번에 업데이트해야 하는 경우가 종종 있습니다. 이럴 때 가장 간결하고 파이썬다운 방법은 바로 리스트 컴프리헨션(list comprehension)을 활용하는 것입니다.
리스트 컴프리헨션은 반복문을 한 줄로 압축하여 리스트를 순회하면서 원하는 연산을 수행할 수 있는 축약 문법입니다. 코드가 짧아질 뿐만 아니라 가독성도 뛰어나기 때문에 실무에서도 널리 사용됩니다.
예제 코드
my_list_1 = [(7, 8, 0), (3, 45, 3), (2, 22, 4)]
print("튜플 리스트 : ")
print(my_list_1)
element_to_add = 41
my_result = [tuple(j + element_to_add for j in sub) for sub in my_list_1]
print("업데이트 후 튜플 리스트 : ")
print(my_result)실행 결과
튜플 리스트 : [(7, 8, 0), (3, 45, 3), (2, 22, 4)] 업데이트 후 튜플 리스트 : [(48, 49, 41), (44, 86, 44), (43, 63, 45)]
코드 설명
- 먼저 여러 개의 튜플을 담고 있는 리스트를 정의하고, 콘솔에 출력하여 초기 상태를 확인합니다.
- 각 요소에 더해줄 값(
element_to_add = 41)을 변수로 정의합니다. - 리스트 컴프리헨션을 통해 튜플 리스트를 순회하면서, 내부 제너레이터 표현식이 각 튜플의 모든 요소에 해당 값을 더합니다.
- 연산 결과는 다시
tuple()함수로 감싸져 튜플 형태를 유지한 채 새로운 리스트로 생성됩니다. - 최종 결과를 변수에 할당한 뒤 콘솔에 출력합니다.
핵심 포인트
이 방식의 장점은 원본 리스트를 수정하지 않고 새로운 리스트를 생성한다는 점입니다. 튜플은 불변(immutable) 자료형이므로 요소를 직접 변경할 수 없는데, 리스트 컴프리헨션과 제너레이터 표현식을 조합하면 기존 데이터를 그대로 보존하면서 변환된 새로운 튜플 리스트를 손쉽게 만들 수 있습니다.