heapq模块中有6个函数:
1、heappush(heap, x):向堆中添加元素
from heapq import * heap = [] for i in range(3): heappush(heap, i) print(heap) #[0, 1, 2] heappush(heap, 0.5) print(heap) #[0, 0.5, 2, 1] heappush(heap, 1.5) print(heap) #[0, 0.5, 2, 1, 1.5]
2、heappop(heap):弹出堆中最小的元素,并且维持剩余元素的堆结构
from heapq import * heap = [] for i in range(3): heappush(heap, i) print(heap) #[0, 1, 2] heappop(heap) print(heap) #[1, 2]
3、heapify(heap):将列表转换为堆
from heapq import * heap = [5, 8, 0, 4, 6, 7] heapify(heap) print(heap) #[0, 4, 5, 8, 6, 7]
4、heapreplace(heap, x):弹出堆中最小的元素,然后将新元素插入。
from heapq import * heap = [5, 8, 0, 4, 6, 7] heapify(heap) print(heapreplace(heap, 5.5)) #0 print(heap) #[4, 5.5, 5, 8, 6, 7]5、nlargest(n, iter)、nsmallest(n, iter):用来寻找任何可迭代对象iter中的前n个最大的或前n个最小的元素。
from heapq import * lst = [5, 8, 0, 4, 6, 7] print(nsmallest(3, lst)) print(nlargest(3, lst))