English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Python에서 heapq를 사용하여 두 정렬된 배열을 병합하는 방법

이 장에서는 Python의 heapq 모듈을 사용하여 두 정렬된 목록을 합치는 방법을 알아보겠습니다. 예를 들어, list1 = [10,20,30,40] 그리고 list2 = [100,200,300,400,500],이를 합치면 list가 반환됩니다3 = [10,20,30,40,100, 200、300、400、500]

이 작업을 수행하기 위해 heapq 모듈을 사용하겠습니다. 이 모듈은 Python의 표준 라이브러리 모듈로 제공됩니다. 따라서 사용하기 전에 잠시 동안 가져와야 합니다.

import heapq

heapq 모듈은 몇 가지 속성을 가집니다. 이는 다음과 같습니다-

메서드 heapq.heapify(iterable)

이는 이터러블 데이터 집합을 스택 데이터 구조로 변환하는 데 사용됩니다.

메서드 heapq.heappush(heap, element)

이 메서드는 요소를 스택에 삽입하고 전체 스택 구조를 다시 정리합니다.

메서드 heapq.heappop(heap)

이 메서드는 스택의 정상을 반환하고 제거한 요소 이외의 요소에 대해 heapify를 수행합니다.

메서드 heapq.heappushpop(heap, element)

이 메서드는 한 문장에서 요소를 삽입하고弹出 합니다.

메서드 heapq.heapreplace(heap, element)

이 메서드는 한 문장에서 요소를 삽입하고弹出 합니다. 그러면 요소가 스택의 뿌리에서 제거되고 스택에 삽입됩니다.

메서드 heapq.nlargest(n, 이터러블, 키=없음)

이 메서드는 스택에서 n개의 가장 큰 요소를 반환합니다.

메서드 heapq.nsmallest(n, 이터러블, 키=없음)

이 메서드는 스택에서 n개의 가장 작은 요소를 반환합니다.

예제 코드

import heapq
first_list = [45, 12, 63, 95, 74, 21, 20, 15, 36]
second_list = [42, 13, 69, 54, 15]
first_list = sorted(first_list)
second_list = sorted(second_list)
print('첫 번째 정렬 목록: ',) + str(first_list))
print('두 번째 정렬 목록: ',) + str(second_list))
final_list = list(heapq.merge(first_list, second_list))
print('최종 목록: ',) + str(final_list))

출력 결과

첫 번째 정렬 목록: [12, 15, 20, 21, 36, 45, 63, 74, 95]
두 번째 정렬 목록: [13, 15, 42, 54, 69]
최종 목록: [12, 13, 15, 15, 20, 21, 36, 42, 45, 54, 63, 69, 74, 95]
당신이 좋아할 만한 것