Python으로 데이터 분석 작업을 하다 보면 여러 개의 리스트를 하나의 리스트로 결합해야 하는 경우가 자주 발생합니다. 여러 리스트를 하나로 묶어두면 이후 프로그램의 다른 부분에서 단일 입력값으로 처리할 수 있어 편리하며, 반복문 실행 횟수가 줄어들어 성능 면에서도 이점을 얻을 수 있습니다.
이 글에서는 Python에서 여러 리스트를 하나로 합치는 대표적인 세 가지 방법, 즉 + 연산자, zip() 함수, itertools.chain()을 예제 코드와 함께 살펴보겠습니다.
1. + 연산자 사용하기
+ 연산자는 리스트를 단순하게 이어 붙이는 가장 직관적인 방법입니다. 연산자를 리스트 이름 사이에 넣기만 하면 되고, 그 결과는 하나의 더 큰 리스트에 저장됩니다. 각 리스트 내 요소들의 순서는 그대로 유지됩니다.
예제 코드
listA = ['Mon', 'Tue', 'Wed']
listB = ['2 pm', '11 am','1 pm']
listC = [1, 3, 6]
# 주어진 리스트
print("Given list A: " ,listA)
print("Given list B: " ,listB)
print("Given list C: ",listC)
# + 연산자 사용
res_list = listA + listB + listC
# 결과 출력
print("Combined list is : ",res_list)실행 결과
위 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.
Given list A: ['Mon', 'Tue', 'Wed'] Given list B: ['2 pm', '11 am', '1 pm'] Given list C: [1, 3, 6] Combined list is : ['Mon', 'Tue', 'Wed', '2 pm', '11 am', '1 pm', 1, 3, 6]
2. zip() 함수 사용하기
zip() 함수는 각 리스트에서 같은 인덱스 위치에 있는 요소들을 하나의 튜플로 묶은 뒤, 다음 인덱스로 넘어가는 방식으로 동작합니다. 따라서 서로 다른 리스트에서 같은 위치에 있는 요소들을 짝지어 함께 관리하고 싶을 때 유용합니다. 예를 들어 요일과 시간, 숫자를 세트로 묶는 경우에 적합합니다.
예제 코드
listA = ['Mon', 'Tue', 'Wed']
listB = ['2 pm', '11 am','1 pm']
listC = [1, 3, 6]
# 주어진 리스트
print("Given list A: " ,listA)
print("Given list B: " ,listB)
print("Given list C: ",listC)
# zip 사용
res_list = list(zip(listA,listB , listC))
# 결과 출력
print("Combined list is : ",res_list)실행 결과
위 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.
Given list A: ['Mon', 'Tue', 'Wed']
Given list B: ['2 pm', '11 am', '1 pm']
Given list C: [1, 3, 6]
Combined list is : [('Mon', '2 pm', 1), ('Tue', '11 am', 3), ('Wed', '1 pm', 6)]3. itertools.chain() 사용하기
itertools 모듈의 chain() 함수는 여러 리스트의 요소들을 기존 순서 그대로 유지한 채 하나로 연결해 줍니다. + 연산자와 비슷한 결과를 내지만, 리스트가 많거나 이터러블 객체를 다룰 때 더 효율적이며 메모리 사용 측면에서도 유리합니다.
예제 코드
from itertools import chain
listA = ['Mon', 'Tue', 'Wed']
listB = ['2 pm', '11 am','1 pm']
listC = [1, 3, 6]
# 주어진 리스트
print("Given list A: " ,listA)
print("Given list B: " ,listB)
print("Given list C: ",listC)
# chain 사용
res_list = list(chain(listA, listB, listC))
# 결과 출력
print("Combined list is : ",res_list)실행 결과
위 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.
Given list A: ['Mon', 'Tue', 'Wed'] Given list B: ['2 pm', '11 am', '1 pm'] Given list C: [1, 3, 6] Combined list is : ['Mon', 'Tue', 'Wed', '2 pm', '11 am', '1 pm', 1, 3, 6]
마무리
정리하면, 리스트를 단순히 이어 붙이고 싶다면 + 연산자나 itertools.chain()을, 같은 인덱스의 요소들을 짝지어 묶고 싶다면 zip()을 사용하는 것이 좋습니다. 상황과 목적에 맞는 방법을 선택하면 코드의 가독성과 성능을 모두 높일 수 있습니다.