튜플로 이루어진 리스트의 내용을 수정해야 할 때는 zip 메서드와 리스트 컴프리헨션(list comprehension)을 함께 사용하면 간단하게 해결할 수 있습니다.
핵심 개념
zip 메서드는 여러 개의 반복 가능한(iterable) 객체를 인자로 받아, 각 요소들을 튜플 형태로 묶어주는 역할을 합니다. 예를 들어 두 개의 리스트를 zip에 전달하면 같은 인덱스끼리 짝지어진 튜플들이 순서대로 생성됩니다.
리스트 컴프리헨션은 리스트를 반복하면서 특정 연산을 수행하는 과정을 한 줄의 코드로 작성할 수 있는 축약 문법입니다. 반복문보다 코드가 간결하고 가독성이 높아 Python에서 널리 사용됩니다.
참고로 리스트는 정수, 실수, 문자열 등 서로 다른 자료형의 값을 함께 저장할 수 있는 자료구조입니다. '튜플의 리스트'란 이름 그대로 여러 개의 튜플이 하나의 리스트 안에 포함된 구조를 의미합니다.
예제 코드
my_list_1 = [('Hi', 1), ('there', 2), ('Jane', 3)]
my_list_2 = [45, 67, 21]
print("The first list is : ")
print(my_list_1)
print("The second list is : " )
print(my_list_2)
my_result = [(i[0], j) for i, j in zip(my_list_1, my_list_2)]
print("The modified list of tuple is : ")
print(my_result)실행 결과
The first list is :
[('Hi', 1), ('there', 2), ('Jane', 3)]
The second list is :
[45, 67, 21]
The modified list of tuple is :
[('Hi', 45), ('there', 67), ('Jane', 21)]코드 설명
- 먼저 튜플들을 담고 있는 리스트를 정의하고 콘솔에 출력합니다.
- 두 번째 리스트(정수 값들)를 정의한 뒤 마찬가지로 출력합니다.
- zip 함수를 사용해 두 리스트를 묶으면, 첫 번째 리스트의 각 튜플과 두 번째 리스트의 값이 인덱스 순서대로 짝지어집니다.
- 리스트 컴프리헨션 안에서 i는 첫 번째 리스트의 튜플, j는 두 번째 리스트의 값을 나타내며, i[0]으로 튜플의 첫 번째 요소만 추출해 새로운 튜플 (i[0], j)을 만듭니다.
- 이렇게 생성된 결과는 새로운 리스트로 변환되어 변수 my_result에 저장됩니다.
- 최종적으로 수정된 튜플 리스트가 콘솔에 출력됩니다.
이 방식의 장점은 기존 튜플의 일부 요소(여기서는 문자열 부분)는 유지하면서, 다른 요소(정수 부분)만 새 리스트의 값으로 교체할 수 있다는 점입니다. 튜플은 불변(immutable) 자료형이므로 직접 값을 변경할 수 없지만, 위와 같이 새로운 튜플을 만들어 리스트를 재구성하면 원하는 수정 작업을 손쉽게 수행할 수 있습니다.