Python中heapq堆的一些基本操作!!——————Python内置模块heapq(无需安装)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python中heapq堆的一些基本操作!!——————Python内置模块heapq(无需安装),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1518字,纯文字阅读大概需要3分钟。
内容图文
![Python中heapq堆的一些基本操作!!——————Python内置模块heapq(无需安装)](/upload/InfoBanner/zyjiaocheng/614/da67c6d769754c139cdeb4a935f53fc2.jpg)
heapq堆
-
堆是非线性的树形的数据结构,有两种堆,最大堆与最小堆。( heapq库中的堆默认是最小堆)
-
最大堆,二叉树中各个父节点的值总是大于或等于任何一个子节点的值。
-
最小堆,二叉树中各个父节点的值总是小于或等于任何一个子节点的值。
-
我们一般使用二叉堆来实现优先级队列,它的内部调整算法复杂度为logN。
-
堆是一个二叉树,其中最小堆每个父节点的值都小于或等于其所有子节点的值。
-
整个最小堆的最小元素总是位于二叉树的根节点。
-
python的heapq模块提供了对堆的支持。 heapq堆数据结构最重要的特征是heap[0]永远是最小的元素
heapq.heapify(list)
将一个列表转换为heapq堆。
import heapq
ls = [1,3,5,6,7,8,9,10]
heapq.heapify(ls)
print(ls)
[1, 3, 5, 6, 7, 8, 9, 10]
heapq.heappush(heap.item)
在堆中的指定位置添加元素。
import heapq
ls = []
heapq.heappush(ls,4)
print(ls)
[4]
heapq.heappop(heap)
删除并返回最小值,因为堆的特征是heap[0]永远是最小的元素,所以一般都是删除第一个元素。
import heapq
ls = [1,2,5,6,8,9,11,15,20]
heapq.heappop(ls)
print(ls)
2, 6, 5, 15, 8, 9, 11, 20]
heapq.heapreplace(heap,item)
删除最小值,并添加元素。
import heapq
ls = [1,2,5,6,8,9,11,15,20]
heapq.heapreplace(ls,500)
print(ls)
[2, 6, 5, 15, 8, 9, 11, 500, 20]
heapq.merge()
将多个堆合并。
import heapq
ls = [1,2,5,6,8,9,11,15,20]
h = [500,200]
for i in heapq.merge(h,ls):
print(i,end=' ')
2 5 6 8 9 11 15 20 500 200
heapq.nlargest(n,heap)
查询堆中的n个最大元素。
import heapq
ls = [1,2,5,6,8,9,11,15,20]
print(heapq.nlargest(3,ls))
[20, 15, 11]
heapq.nsmallest(n,heap)
查询堆中的n个最小元素。
import heapq
ls = [1,2,5,6,8,9,11,15,20]
print(heapq.nsmallest(3,ls))
[1, 2, 5]
内容总结
以上是互联网集市为您收集整理的Python中heapq堆的一些基本操作!!——————Python内置模块heapq(无需安装)全部内容,希望文章能够帮你解决Python中heapq堆的一些基本操作!!——————Python内置模块heapq(无需安装)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。