Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python에서 여러 개의 리스트를 하나로 합치는 3가지 방법

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()을 사용하는 것이 좋습니다. 상황과 목적에 맞는 방법을 선택하면 코드의 가독성과 성능을 모두 높일 수 있습니다.