python之heapq
使用堆可以非常方便的寻找最小值,实例如下:
import heapq
nums = [1, 8, 2, 23, 7, -5, 18, 23, 42, 37, 2]
heapq.heapify(nums)
print(nums)
print(heapq.heappop(nums))
print(nums)
print(heapq.heappop(nums))
print(nums)
print(heapq.heappop(nums))
print(nums)
输出:
可以发现,使用heapify之后,第一个值变成了最小值,但是其他的序列还是乱序。再使用heappop之后,移除了左边第一个值,并使得新的数组的左边第一个值为最小值。
使用堆还能够找到最大或者最小的几个值。看下面实例
import heapq
portfolio = [{'name': 'IBM', 'price': 91.1},{'name': 'AAPL', 'price': 543.22},{'name': 'FB', 'price': 21.09},{'name': 'HPQ', 'price': 31.75},{'name': 'YHOO', 'price': 16.35},{'name': 'ACME', 'price': 115.65}]
cheap = heapq.nsmallest(2, portfolio, key=lambda s: s['price'])
expensive = heapq.nlargest(2, portfolio, key=lambda s: s['price'])
print(cheap)
print(expensive)
第一个nsmallest 表示寻找最小的n个值
第二个nlargest表示寻找最大的n个值
输出如下:
python之heapq相关推荐
- python使用heapq快速查找最大或最小的 N 个元素
python使用heapq快速查找最大或最小的 N 个元素 heapq实现了一个适合与Python的列表一起使用的最小堆排序算法. 堆是非线性的树形的数据结构,有两种堆,最大堆与最小堆.( heapq ...
- python中heapq的库是什么_详解Python中heapq模块的用法
详解Python中heapq模块的用法 来源:中文源码网 浏览: 次 日期:2018年9月2日 [下载文档: 详解Python中heapq模块的用法.txt ] (友情提示:右键点上行t ...
- python中heapq的库是什么_Python中heapq模块的用法
heapq 模块提供了堆算法.heapq是一种子节点和父节点排序的树形数据结构.这个模块提供heap[k] <= heap[2*k+1] and heap[k] <= heap[2*k+2 ...
- Python 的 heapq 模块源码分析
作者:weapon 来源:https://zhuanlan.zhihu.com/p/54260935 起步 heapq 模块实现了适用于Python列表的最小堆排序算法. 堆是一个树状的数据结构,其中 ...
- python利用什么模块_什么是Python的heapq模块?
我尝试了"heapq"并得出结论,我的期望与我在屏幕上看到的不同.我需要有人解释它是如何工作的以及它在哪里有用. If you need to maintain a sorted ...
- 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
1.heapq介绍: 1)堆是非线性的树形的数据结构,有两种堆,最大堆与最小堆.( heapq库中的堆默认是最小堆) 最大堆,树种各个父节点的值总是大于或等于任何一个子节点的值. 最小堆,树种各个父节 ...
- Python中的堆实现:heapq 模块——利用堆结构实现快速访问数据流中的中位数
堆结构 堆结构是一种优先队列,可以以任意顺序添加对象,并随时查找或删除最小(大)的元素,或者查找和删除前 K 个最小(大)元素.相比于列表方法min() / max(),这样做的效率要高得多. 堆结构 ...
最新文章
- CPU0 处理器的架构及应用
- 第二课 , 启动 ./start-all.sh
- 微服务架构与Docker容器之间关系
- C#调用非托管C++DLL:直接调用法
- Pinterest 首位产品经理:爆发式增长背后的 5 大经验总结
- 北斗导航 | 坐标转换:ECEF转LLA:GPS坐标系:WGS84(matlab代码)
- 从零开始做一个SLG游戏(三):用unity绘制图形
- 你还在使用fastjson,可以尝试jsoncode
- 云访问安全代理(CASB)行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
- ObjC学习2-语法循环、条件,原来像学C语言一样啊!
- CentOS 安装Python3.x常见问题
- 自己做的PPT试题或其它文件模板有时被系统还原成原来默认的样子,如何解决?
- PWA登陆iOS了,但它还有这些缺陷
- centos 安装wget命令
- C语言——基础链表详解
- 俄罗斯、乌克兰程序员薪资大曝光!(来长长见识)
- 红包码收款码合二为一
- maven 入门(转)
- 计算机科学导论第五版第二章答案,计算机科学导论样题1答案
- 火狐浏览器中如何设置自动翻译网页
热门文章
- 达沃斯讨论最大的技术革命机会
- IEC,ASTM,ISO,DIN,JIS等国际标准网站
- Tomcat如果默认8080被占用修改端口号和查询端口号地址
- ide循环执行用例 selenium_Selenium Web自动化Page Object设计模式——循环执行测试用例...
- f score matlab,机器学习中如何用F-score进行特征选择
- JDK源码分析(2)LinkedList
- oracle关键字作为字段名使用方法
- burpsuite_pro的使用
- mysql查看数据库所占用的空间
- (转)一段如何調用Button.Click事件的故事