_heapq - Heap queue algorithm (a.k.a. priority queue).
| Use Case | Command | Description |
|---|---|---|
| Create empty heap | heap = [] | Initialize an empty list as heap. |
| Push item | heappush(heap, item) | Push item onto heap, maintaining heap invariant. |
| Pop smallest | heappop(heap) | Pop and return the smallest item. |
| Peek smallest | heap[0] | Access smallest item without popping. |
| Transform list to heap | heapify(x) | Convert list into heap in-place, O(len(x)). |
| Replace smallest | heapreplace(heap, item) | Pop smallest and push new item, more efficient than separate pop/push. |
Heaps are arrays for which a[k] <= a[2*k+1] and a[k] <= a[2*k+2] for all k, counting elements from 0. For the sake of comparison, non-existing elements are considered to be infinite. The interesting property of a heap is that a[0] is always its smallest element.
Usage:
heap = [] # creates an empty heap
heappush(heap, item) # pushes a new item on the heap
item = heappop(heap) # pops the smallest item from the heap
item = heap[0] # smallest item on the heap without popping it
heapify(x) # transforms list into a heap, in-place, in linear time
item = heapreplace(heap, item) # pops and returns smallest item, and adds
# new item; the heap size is unchanged
Our API differs from textbook heap algorithms as follows:
These two make it possible to view the heap as a regular Python list without surprises: heap[0] is the smallest item, and heap.sort() maintains the heap invariant!
heapify(heap, /) β Transform list into a heap, in-place, in O(len(heap)) time.heappop(heap, /) β Pop the smallest item off the heap, maintaining the heap invariant.heappush(heap, item, /) β Push item onto heap, maintaining the heap invariant.heappushpop(heap, item, /) β Push item on the heap, then pop and return the smallest item from the heap. The combined action runs more efficiently than heappush() followed by a separate call to heappop().heapreplace(heap, item, /) β Pop and return the current smallest value, and add the new item. This is more efficient than heappop() followed by heappush(), and can be more appropriate when using a fixed-size heap. Note that the value returned may be larger than item! That constrains reasonable uses of this routine unless written as part of a conditional replacement:
if item > heap[0]:
item = heapreplace(heap, item)
__about__ = 'Heap queues\n\n[explanation by FranΓ§ois Pinard]\n\nH... t...'
(built-in)
Generated by phpman v4.9.27 · Markdown · JSON · MCP Author: Che Dong Under GNU General Public License
2026-07-19 18:04 @216.73.216.114
CrawledBy Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
Enhanced by LLM: deepseek-v4-flash / taotoken.net / www.chedong.com - original format