파이썬 프로그래밍을 하다 보면 요소가 튜플(tuple)로 구성된 리스트를 다루는 경우가 자주 있습니다. 그런데 데이터 처리 과정에서 튜플은 불변(immutable)하기 때문에, 값을 수정하거나 다양한 연산을 적용하려면 이를 리스트(list)로 변환해야 하는 경우가 생깁니다. 이번 글에서는 튜플로 이루어진 리스트를 리스트의 리스트로 변환하는 두 가지 대표적인 방법을 살펴보겠습니다.
1. 리스트 컴프리헨션(List Comprehension) 활용
리스트 컴프리헨션은 가장 직관적이고 파이썬다운 방법입니다. for 루프를 통해 외부 리스트의 각 튜플 요소를 하나씩 순회하면서, list() 함수를 적용해 각 튜플을 리스트로 변환합니다.
예제 코드
listA = [('Mon', 3), ('Wed', 4), ('Fri', 7, 'pm')]
# 주어진 리스트 출력
print("Given list : \n", listA)
# 각 튜플을 리스트로 변환
res = [list(ele) for ele in listA]
# 결과 출력
print("Final list: \n", res)실행 결과
Given list :
[('Mon', 3), ('Wed', 4), ('Fri', 7, 'pm')]
Final list:
[['Mon', 3], ['Wed', 4], ['Fri', 7, 'pm']]위 코드에서 볼 수 있듯이, 각 튜플이 개별 리스트로 변환되어 최종적으로 리스트 안에 여러 개의 리스트가 담긴 구조가 만들어집니다. 코드가 간결하고 가독성이 높아 실무에서 가장 널리 사용되는 방식입니다.
2. map() 함수와 list() 함수 조합
두 번째 방법은 map() 함수와 list() 함수를 함께 사용하는 것입니다. map()에 첫 번째 인자로 list 함수를, 두 번째 인자로 변환 대상 리스트를 전달하면, 외부 리스트에서 가져온 모든 튜플 요소에 list 함수가 일괄 적용됩니다. 마지막으로 결과를 다시 list()로 감싸 최종 리스트를 얻습니다.
예제 코드
listA = [('Mon', 3), ('Wed', 4), ('Fri', 7, 'pm')]
# 주어진 리스트 출력
print("Given list : \n", listA)
# map과 list 함수를 활용한 변환
res = list(map(list, listA))
# 결과 출력
print("Final list: \n", res)실행 결과
Given list :
[('Mon', 3), ('Wed', 4), ('Fri', 7, 'pm')]
Final list:
[['Mon', 3], ['Wed', 4], ['Fri', 7, 'pm']]정리
두 방법 모두 동일한 결과를 반환하지만 상황에 따라 선택 기준이 달라질 수 있습니다. 리스트 컴프리헨션은 변환 과정에서 추가 로직(조건 필터링 등)을 넣기 쉽고 가독성이 뛰어나며, map() 함수는 대용량 데이터 처리 시 내부적으로 C 수준으로 최적화되어 있어 성능 면에서 유리할 수 있습니다. 프로젝트의 요구 사항과 데이터 규모에 맞게 적절한 방법을 선택하시기 바랍니다.