Python中heapq堆相关方法

背景

在LeetCode中,有很多题目都可以使用优先队列实现,Python中的数据结构是heapq,Python的堆是小顶堆,heap[0]永远是最小的元素,今天总结一下常用方法

在这里插入图片描述

常用方法

添加元素

>>> import heapq
>>> my_list = []
>>> heapq.heappush(my_list,2)
>>> my_list
[2]

删除并返回最小的元素

>>> my_list
[1, 1, 3, 5, 2, 5, 8, 9, 6]
>>> heapq.heappop(my_list)
1
>>> my_list
[1, 2, 3, 5, 6, 5, 8, 9]

查询堆中的最大的n个元素

>>> my_list
[3, 5, 5, 9, 6, 6, 8, 99]
>>> heapq.nlargest(3,my_list)
[99, 9, 8]

查询堆中的最小n个元素

>>> my_list
[3, 5, 5, 9, 6, 6, 8, 99]
>>> heapq.nsmallest(3,my_list)
[3, 5, 5]

列表转化为堆

>>> my_list = [1,2,3,5,1,5,8,9,6]
>>> heapq.heapify(my_list)
>>> my_list
[1, 1, 3, 5, 2, 5, 8, 9, 6]

猜你喜欢

转载自blog.csdn.net/m0_46521785/article/details/123621223