Python heapq Module

홍찬기
2 min readJul 11, 2019

--

heapq 란

heapq 는 Python의 내장모듈이다. heapq 는 이진트리(Binary Tree)를 기반으로 한 최소 힙(min heap)정렬 트리를 제공한다.

heap 생성 , 원소 추가

heapq 를 사용해 heap을 생성하는 방법은 아주 간단하다. 아래와 같이 heapq 모듈을 임포트 해준다음 heapq.heappush 를 해주면 heap에다가 추가를 해줄수 있다.

import heapqheap = []
heapq.heappush(heap,1)
heapq.heappush(heap,4)

위와같이 heap에 원소를 추가하고 print를 해주면 다음과같은 결과가 나온다

[1,4]

이번에는 정렬이 되는가 한번 살펴보자. 크기 순서로 추가를 하지 않고 아무렇게나 추가를 한번 하면 아래와 같은 결과가 나온다

import heapqheap = []
heapq.heappush(heap,4)
heapq.heappush(heap,2)
heapq.heappush(heap,5)
heapq.heappush(heap,7)
heapq.heappush(heap,1)
[1,2,4,5,7]

heap 원소 삭제

heap 원소를 삭제하는 방법은 간단하다. 아래와 같이 heapq.heappop(heap) 을 사용하면 heap의 첫번째 원소를 삭제할 수 있다. 이때 heapq.heapify(heap) 을 사용한 이유는 heapify를 사용하면 기존의 List를 heap으로 변환해주기 때문이다.

heap = [1,2,5,7,8]heapq.heapify(heap)heapq.heappop(heap)
[2,5,7,8]

--

--

No responses yet