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

Python에서 두 개의 리스트를 정렬하여 하나로 합치는 방법

리스트(List)는 Python에서 가장 폭넓게 활용되는 자료 구조 중 하나입니다. 이 글에서는 두 개의 리스트에 담긴 요소들을 하나로 결합한 뒤, 최종 결과를 정렬된 형태로 얻는 여러 가지 방법을 살펴보겠습니다.

방법 1: + 연산자와 sorted() 함수 사용

+ 연산자는 두 리스트의 요소들을 하나의 리스트로 연결해 줍니다. 이렇게 만들어진 새로운 리스트에 sorted() 함수를 적용하면, 결합된 모든 요소가 오름차순으로 정렬된 결과를 얻을 수 있습니다. 코드가 직관적이어서 초보자에게도 이해하기 쉬운 방식입니다.

예제 코드

listA = ['Mon', 'Tue', 'Fri']
listB = ['Thu','Fri','Sat']
# 주어진 리스트
print("Given list A is : ",listA)
print("Given list B is : ",listB)
# 결합 후 정렬
res = sorted(listA + listB)
# 결과 출력
print("The combined sorted list is : \n" ,res)

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다 −

Given list A is : ['Mon', 'Tue', 'Fri']
Given list B is : ['Thu', 'Fri', 'Sat']
The combined sorted list is :
['Fri', 'Fri', 'Mon', 'Sat', 'Thu', 'Tue']

방법 2: heapq 모듈의 merge() 함수 사용

heapq 모듈에서 제공하는 merge() 함수 역시 두 리스트의 요소를 하나로 결합하는 데 활용할 수 있습니다. 이 함수는 원래 정렬된 입력값을 효율적으로 병합하도록 설계되었으며, 여기에 sorted() 함수를 함께 적용하면 최종적으로 정렬된 결과를 확실하게 얻을 수 있습니다.

예제 코드

from heapq import merge
listA = ['Mon', 'Tue', 'Fri']
listB = ['Thu','Fri','Sat']
# 주어진 리스트
print("Given list A is : ",listA)
print("Given list B is : ",listB)
# 병합 수행
res = list(merge(listA,listB))
# 결과 출력
print("The combined sorted list is : \n" ,sorted(res))

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다 −

Given list A is : ['Mon', 'Tue', 'Fri']
Given list B is : ['Thu', 'Fri', 'Sat']
The combined sorted list is :
['Fri', 'Fri', 'Mon', 'Sat', 'Thu', 'Tue']

정리

두 방법 모두 동일한 정렬된 결과를 반환하지만 상황에 따라 장단점이 있습니다. 단순히 두 리스트를 합쳐 정렬만 하면 되는 경우에는 + 연산자와 sorted() 조합이 간결하고 명확합니다. 반면, 이미 각각 정렬되어 있는 대용량 리스트를 효율적으로 병합해야 할 때는 heapq.merge()가 더 나은 성능을 발휘합니다. 참고로 중복 요소('Fri'처럼 두 리스트에 모두 존재하는 값)도 그대로 유지되므로, 중복 제거가 필요하다면 set()을 추가로 활용하면 됩니다.