Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

heapq를 사용하여 Python에서 두 개의 정렬된 배열을 병합하시겠습니까?

<시간/>

이 섹션에서는 파이썬에서 heapq 모듈을 사용하여 두 개의 정렬된 목록을 병합하는 방법을 볼 것입니다. 예를 들어 list1 =[10, 20, 30, 40]이고 list2 =[100, 200, 300, 400, 500]이면 병합 후 list3 =[10, 20, 30, 40, 100, 200, 300, 400, 500]

이 작업을 수행하기 위해 heapq 모듈을 사용할 것입니다. 이 모듈은 표준 라이브러리 모듈로 Python과 함께 제공됩니다. 따라서 사용하기 전에 가져와야 합니다.

import heapq

heapq 모듈에는 몇 가지 속성이 있습니다. 다음과 같습니다 -

메서드 heapq.heapify(반복 가능)

iterable 데이터 세트를 힙 데이터 구조로 변환하는 데 사용됩니다.

메서드 heapq.heappush(힙, 요소)

이 메서드는 요소를 힙에 삽입하는 데 사용됩니다. 그런 다음 전체 힙 구조를 다시 힙합니다.

메서드 heapq.heappop(힙)

이 메서드는 힙의 맨 위에서 요소를 반환 및 삭제하고 나머지 요소에 대해 heapify를 수행하는 데 사용됩니다.

메서드 heapq.heappushpop(힙, 요소)

이 메서드는 하나의 문에 요소를 삽입하고 팝업하는 데 사용됩니다.

메서드 heapq.heapreplace(힙, 요소)

이 메서드는 하나의 문에 요소를 삽입하고 팝업하는 데 사용됩니다. 힙의 루트에서 요소를 제거한 다음 힙에 요소를 삽입합니다.

메서드 heapq.nlargest(n, iterable, key=None)

이 메서드는 힙에서 가장 큰 n개의 요소를 반환하는 데 사용됩니다.

메서드 heapq.nsmallest(n, iterable, key=None)

이 메서드는 힙에서 가장 작은 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('First sorted list: ' + str(first_list))
print('Second sorted list: ' + str(second_list))

final_list = list(heapq.merge(first_list, second_list))
print('The final list: ' + str(final_list))

출력

First sorted list: [12, 15, 20, 21, 36, 45, 63, 74, 95]
Second sorted list: [13, 15, 42, 54, 69]
The final list: [12, 13, 15, 15, 20, 21, 36, 42, 45, 54, 63, 69, 74, 95]