Python heapq 模块
实例
维护一个最小堆并弹出最小的元素:
import heapq
h = []
heapq.heappush(h, 3)
heapq.heappush(h, 1)
heapq.heappush(h, 2)
print([heapq.heappop(h) for _ in range(3)])
亲自试一试 »
定义和用法
heapq 模块为普通的 Python 列表提供堆(优先级队列)算法。
使用它可以高效地将最小元素压入/弹出,并实现基于优先级的工作流程。
成员
| 成员 | 描述 |
|---|---|
| heapify() | 将列表原地转换为堆,时间复杂度为线性。 |
| heappop() | 从堆中弹出并返回最小元素。 |
| heappush() | 将元素压入堆,同时保持堆的不变性。 |
| heappushpop() | 将元素压入堆,然后弹出并返回最小元素(比单独调用更高效)。 |
| heapreplace() | 弹出并返回最小元素,然后将新元素压入堆。 |
| merge() | 将多个已排序的可迭代对象合并为一个已排序的迭代器。 |
| nlargest() | 返回包含 n 个最大元素的列表。 |
| nsmallest() | 返回包含 n 个最小元素的列表。 |

