Python heapq模块
Python heapq模块
heapq模块提供了如下几个函数:
函数 | 用法 |
---|---|
heapq.heappush(heap, item) | 把item添加到heap中(heap是一个列表) |
heapq.heappop(heap) | 把堆顶元素弹出,返回的就是堆顶 |
heapq.heappushpop(heap, item) | 先把item加入到堆中,然后再pop,比heappush()再heappop()要快得多 |
heapq.heapreplace(heap, item) | 先pop,然后再把item加入到堆中,比heappop()再heappush()要快得多 |
heapq.heapify(x) | 堆化(x是一个列表),默认从小到大排序 |
heapq.merge(*iterables) | 将多个列表合并,并进行堆调整,返回的是合并后的列表的迭代器 |
heapq.nlargest(n, iterable, key=None) | 返回最大的n个元素(Top-K问题) |
heapq.nsmallest(n, iterable, key=None) | 返回最小的n个元素(Top-K问题) |
import heapq
import random# Top-K
mylist = list(random.sample(range(100), 10))
k = 3
largest = heapq.nlargest(k, mylist) # 换回列表中最大的K个值
smallest = heapq.nsmallest(k, mylist) # 返回列表中最小的K个值print('original list is', mylist)
print('largest-'+str(k), ' is ', largest)
print('smallest-'+str(k), ' is ', smallest)heapq.heapify(mylist) # heapify 堆化,默认从小到大排序
print('heapify list is', mylist)heapq.heappush(mylist, 105)
print('pushed heap is', mylist)heapq.heappop(mylist) # 默认弹出[0]
print('popped heap is', mylist)# heappushpop & heapreplace
heapq.heappushpop(mylist, 130) # 先将130加入列表在弹出第一个元素
print('heappushpop', mylist)heapq.heapreplace(mylist, 2) # heappop -> heappush 先pop再把2加到列表中
print('heapreplace', mylist)
输出结果为:
original list is [18, 6, 10, 24, 48, 2, 9, 25, 16, 89]
largest-3 is [89, 48, 25]
smallest-3 is [2, 6, 9]
heapify list is [2, 6, 9, 16, 48, 10, 18, 25, 24, 89]
pushed heap is [2, 6, 9, 16, 48, 10, 18, 25, 24, 89, 105]
popped heap is [6, 16, 9, 24, 48, 10, 18, 25, 105, 89]
heappushpop [9, 16, 10, 24, 48, 130, 18, 25, 105, 89]
heapreplace [2, 16, 10, 24, 48, 130, 18, 25, 105, 89]
Python heapq模块相关推荐
- python heapq模块使用
Python内置的heapq模块 Python3.4版本中heapq包含了几个有用的方法: heapq.heappush(heap,item):将item,推入heap >>> it ...
- python heapq模块查找集合中最大或最小n个元素列表
怎样从一个集合中获得最大或者最小的 N 个元素列表? heapq 模块有两个函数: nlargest() 和 nsmallest() 可以完美解决这个问题. 举例说明: 一.集合类型 "&q ...
- python之堆heapq模块
python之堆heapq模块 堆是一种特殊的树形结构,通常我们所说的堆的数据结构指的是完全二叉树,并且根节点的值小于等于该节点所有子节点的值. 堆是非线性的树形的数据结构,有两种堆,最大堆与最小堆. ...
- Python取top N相关的模块:heapq模块
Python取top N相关的模块:heapq模块 原文:[Python]Python取top N相关的模块:heapq模块_小怪孩的成长之路-CSDN博客_python 取top 最近在程序中需要取 ...
- python树状节点 可拖拽_Python 的 heapq 模块源码分析
原文链接:Python 的 heapq 模块源码分析 起步 heapq 模块实现了适用于Python列表的最小堆排序算法. 堆是一个树状的数据结构,其中的子节点都与父母排序顺序关系.因为堆排序中的树是 ...
- Python 的 heapq 模块源码分析
作者:weapon 来源:https://zhuanlan.zhihu.com/p/54260935 起步 heapq 模块实现了适用于Python列表的最小堆排序算法. 堆是一个树状的数据结构,其中 ...
- Python中的堆实现:heapq 模块——利用堆结构实现快速访问数据流中的中位数
堆结构 堆结构是一种优先队列,可以以任意顺序添加对象,并随时查找或删除最小(大)的元素,或者查找和删除前 K 个最小(大)元素.相比于列表方法min() / max(),这样做的效率要高得多. 堆结构 ...
- python分配 使最大的最小_python3中的heapq模块使用
###heapq-堆排序算法 heapq实现了一个适合与Python的列表一起使用的最小堆排序算法. 二叉树 树中每个节点至多有两个子节点 满二叉树 树中除了叶子节点,每个节点都有两个子节点 什么是完 ...
- Python常用数据结构之heapq模块
Python数据结构常用模块:collections.heapq.operator.itertools heapq 堆是一种特殊的树形结构,通常我们所说的堆的数据结构指的是完全二叉树,并且根节点的值小 ...
最新文章
- 69张图看懂Elon Musk的脑机接口芯片项目
- rmi反序列化导致rce漏洞修复_JAVA反序列化漏洞解决办法
- 算法之动态规划初步(Java版)
- C++中使用new和delete运算符实现二维数组的操作
- 盘一盘推荐系统里值得一读的那些论文
- 商汤3DAR团队-3D视觉组招聘
- Log4j配置学习文档之三 参考
- fstream与 C 风格(例如fread 和 fwrite )两种读写文件方法的效率比较
- uniapp ---- 添加分页
- DHCP详细工作过程(转)
- CentOS6.5配置网络
- C# Winform控件包 MaterialSkin使用教程 -- 侧边栏篇
- xp系统做无盘服务器,锐起无盘网吧系统无盘XP系统特点
- 巨准SCRM私域案例拆解丨看看WonderLab如何霸屏朋友圈
- web前端培训 - 12个有用的 JavaScript 代码片段
- 【Python爬虫】爬取豆瓣电影Top 250
- 支持十亿级密态数据、低代码,蚂蚁集团发布隐语开放平台
- 如何在word里里面打勾
- matlab提示参数不足,为什么提示输入参数条目不足?
- 连就连,你我相约定百年。谁若97岁死,奈何桥上等三年!