Python heapq堆的常用方法
heapq.heappush(heap, item)
heap为定义堆,item增加的元素
>>> import heapq
>>> h = []
>>> heapq.heappush(h,2)
>>> h
[2]
heapq.heapify(list)
将列表转换为堆
>>> list = [1,2,3,5,1,5,8,9,6]
>>> heapq.heapify(list)
>>> list
[1, 1, 3, 5, 2, 5, 8, 9, 6]
heapq.heappop(heap)
删除并返回最小值,因为堆的特征是heap[0]永远是最小的元素,所以一般都是删除第一个元素。
>>> list
[1, 1, 3, 5, 2, 5, 8, 9, 6]
>>> heapq.heappop(list)
1
>>> list
[1, 2, 3, 5, 6, 5, 8, 9]
heapq.heapreplace(heap.item)
删除并返回最小元素值,添加新的元素值
>>> list = [1, 2, 3, 4, 5, 6, 5, 8, 9]
>>> heapq.heapreplace(list,99)
1
>>> list
[2, 4, 3, 8, 5, 6, 5, 99, 9]
heapq.heappushpop(list, item)
判断添加元素值与堆的第一个元素值对比;如果大,则删除并返回第一个元素,然后添加新元素值item.
如果小,则返回item. 原堆不变。
>>> list = [2, 4, 3, 8, 5, 6, 5, 99, 9]
>>> heapq.heappushpop(list,6)
2
>>> list
[3, 4, 5, 8, 5, 6, 6, 99, 9]
>>> heapq.heappushpop(list,1)
1
>>> list
[3, 4, 5, 8, 5, 6, 6, 99, 9]