python heapq模块使用
Python内置的heapq模块
Python3.4版本中heapq包含了几个有用的方法:
heapq.heappush(heap,item):将item,推入heap
>>> items = [1,2,9,7,3]
>>> heapq.heappush(items,10)
>>> items
[1, 2, 9, 7, 3, 10]
>>>
heapq.heappop(heap):将heap的最小值pop出heap,heap为空时报IndexError错误
>>> heapq.heappop(items)#heap在pop时总是将最小值首先pop出
1
>>> items
[2, 3, 9, 7, 10]
>>>
heapq.heappushpop(heap,item):pop出heap中最小的元素,推入item
>>> items
[2, 3, 9, 7, 10]
>>> heapq.heappushpop(items,11)
2
>>> items
[3, 7, 9, 11, 10]
>>>
heapq.heapify(x):将list X转换为heap
>>> nums = [1,10,9,8]
>>> heap = list(nums)
>>> heapq.heapify(heap)
>>> heap
[1, 8, 9, 10]
>>>
heapq.heapreplace(heap,item):pop出最小值,推入item,heap的size不变
>>> heap
[1, 8, 9, 10]
>>> heapq.heapreplace(heap,100)
1
>>> heap
[8, 10, 9, 100]
>>
heapq.merge(*iterable):将多个可迭代合并,并且排好序,返回一个iterator
>>> heap
[8, 10, 9, 100]
>>> heap1 = [10,67,56,80,79]
>>> h = heapq.merge(heap,heap1)
>>> list(h)
[8, 10, 9, 10, 67, 56, 80, 79, 100]#需要 说明的是这里所谓的排序不是完全排序,只是两个list对应位置比较,
#将小的值先push,然后大的值再与另外一个list的下一个值比较
heapq.nlargest(n,iterable,key):返回item中大到小顺序的前N个元素,key默认为空,可以用来指定规则如:function等来处理特定的排序
itemsDict=[
{'name':'dgb1','age':23,'salary':10000},
{'name':'dgb2','age':23,'salary':15000},
{'name':'dgb3','age':23,'salary':80000},
{'name':'dgb4','age':23,'salary':80000}
]
itemsDictlarge = heapq.nlargest(3,itemsDict,lambda s:s['salary'])
print(itemsDictlarge)
[{'name': 'dgb3', 'age': 23, 'salary': 80000}, {'name': 'dgb4', 'age': 23, 'salary': 80000}, {'name': 'dgb2', 'age': 23, 'salary': 15000}]
如果没有指定key,那么就按照第一个字段来排序
heapq.nsmallest(n,iterable,key):返回item中小到大顺序的前N个元素,key默认为空,可以用来指定规则如:function等来处理特定的排序
这个函数的用法与上一个nlargest是一样的。
To create a heap, use a list initialized to[], or you can transform a populated list into a heap via functionheapify().
创建heap可以通过创建list,和使用heapify方法来实现。
---------------------
from:https://blog.csdn.net/chuan_day/article/details/73554861
转载于:https://www.cnblogs.com/bonelee/p/10090727.html
python heapq模块使用相关推荐
- Python heapq模块
Python heapq模块 heapq模块提供了如下几个函数: 函数 用法 heapq.heappush(heap, item) 把item添加到heap中(heap是一个列表) heapq.hea ...
- 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 堆是一种特殊的树形结构,通常我们所说的堆的数据结构指的是完全二叉树,并且根节点的值小 ...
最新文章
- php与jpython-Ruby on Rails VS PHP VS Python
- The next Industry Standard in IT Monitoring, a python implementation Nagios like tool --- Shinken
- spring程序开发步骤
- python中的rstrip函数_Python strip() lstrip() rstrip() 函数 去除空格
- C#使用Json.NET解析Json
- Linux学习之CentOS(一)--CentOS6.4环境搭建
- java对多态的理解_对于Java中多态的理解
- 为什么采用4~20mA的电流来传输模拟量?(转)
- 激战2:逐火之路-概念艺术设计
- smartforms长文本处理方式
- 返回json格式的编写(Msg)
- 查找功能_苹果查找功能怎么查找另一台设备?很简单,只需这样操作
- JAVA开源协同过滤算法,推荐算法:协同过滤算法的介绍
- 如何免费将office文档转成PDF的几种方法
- 她受马云影响创业,想在全球女性创业者大会上分享这些事
- 二进制数的反码和补码
- The APR based Apache Tomcat Native library which allows optimal performance in production ...解决方案
- python PIL库中的getpixel函数
- Git常用命令有哪些?
- py-eureka-client学习笔记
热门文章
- apache安装_Ubuntu20.04安装Sql+apache+php
- 合并报表编制采用的理论_合并报表操作的整体思路梳理
- mysql开启日志占cpu不_使用MySQL Slow Log来解决MySQL CPU占用高的问题
- 为什么计算机模拟不了人脑,为什么计算机永远不会拥有人类的意识?听完科学家的解释恍然大悟...
- 【mysql】sql查询速度不变?不同数据量下,查询速度不会变化的问题
- 【以太坊】Ethereum交易过程及ethereumjs-tx的应用
- 保洁阿姨看完都会了!java导出excel并下载详解
- 【金三银四】java是世界上最好的语言
- 基于Pytorch再次解读DenseNet现代卷积神经网络
- python【数据结构与算法】一种时间复杂度和空间复杂度的计算方法