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错误
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006 寻找有志同道合的小伙伴,
互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
>>> 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
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006 寻找有志同道合的小伙伴,
互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
>>> 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
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006 寻找有志同道合的小伙伴,
互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
>>> 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方法来实现。
Python内置的heapq模块的使用相关推荐
- Python内置函数os模块shutil模块
一.内置函数 内置函数就是python里面自带的一些函数,不需要自己定义,直接就可以使用的函数. print(sum([1,2,3])) #求和的 print(min("123") ...
- python内置方法+数学模块+随机模块+序列化模块
内置方法 abs 绝对值函数 round 四舍五入 (n.5 n为偶数则舍去 n.5 n为奇数,则进一!) 特点:奇进偶不进 res = round(4.51) #正常的四舍五入 5 res = ro ...
- python 内置的os模块将文件夹下所有图片名称加上指定字符
# eg:将文件夹下所有图片名称加上'M' def change_name(path_img):global iif os.path.isfile(path_img):file_path=os.pat ...
- node sqlite 插入数据_方便且实用,Python内置的轻量级数据库实操
之前我们在很多项目案例中都使用了MySQL数据库.有的同学问:MySQL安装和配置太麻烦了,老是搞不定,有没有更简便的方法? 当然有咯! Python内置的sqlite3模块就是一个轻量级的数据库,不 ...
- python内置库有哪些_python 内置库
广告关闭 回望2020,你在技术之路上,有什么收获和成长么?对于未来,你有什么期待么?云+社区年度征文,各种定制好礼等你! version: 0. 2.0, configurations: }, de ...
- 收藏!Python内置的轻量级数据库竟如此好用!全网最实用sqlite3实战项目。
前段时间推送了一篇Python操作MySQL数据库的文章:我用 Python 处理3万多条数据,只要几秒钟--,文章发布后反应很好,很多粉丝给我私信,有的朋友说:MySQL安装起来太麻烦了,有没有更简 ...
- python内置collections模块的使用
python内置collections模块的使用 文章目录: 一.collections模块说明 1.查看collections模块的定义路径 2.查看collections文档介绍信息 3.查看co ...
- python的shutil模块是内置的_Python之shutil模块11个常用函数详解,python内置函数是什么...
Python之shutil模块11个常用函数详解,python内置函数是什么 shutil 是 Python 中的高级文件操作模块,与os模块形成互补的关系,os主要提供了文件或文件夹的新建.删除.查 ...
- Python 内置时间模块:Calendar
Python 内置的日历( calendar )模块主要输出跟日历相关的内容,相对 datetime 和 time 模块来说, calendar 模块的功能要简单些. 最常用的两个功能是输出某年的日历 ...
最新文章
- Yann LeCun:发现智能原理是AI的终极问题 | 独家对话
- linux设备驱动——总线、设备、驱动
- 输出nc数据_气象数据处理的火箭加速器—CDO
- CodeForces - 1422D Returning Home(最短路+思维建图)
- Ajax响应处理数据的三种格式(主要使用gson包)
- react学习(40)----react中的jsx简介
- leetcode 110 --- 判断给定的二叉树是否是平衡二叉树
- python标注审核_Python类型标注
- Javascript学习历程之事件
- ftk学习记(对话框篇)
- RAID6结构原理详解
- 客户机无法上网,ping 127.0.0.1提示unable to contact IP driver ,error code2
- 浅析物联网及云计算技术在传统汽车检测线中的应用
- 直通车怎么能不推广计算机设备,直通车智能推广具体怎么设置?如何操作?
- win10桌面计算机打不开,win10“此电脑”双击打不开,任何文件夹都打不开
- python中怎么统计英文字符的个数_python 输入一行字符,分别统计出其中英文字母,空格,数字和其他字符的个数用python代码输入一行字符...
- 【李沐:动手学深度学习pytorch版】第2章:预备知识
- 我的世界服务器成就系统的其他成就是什么,大量的成就奖励亟待领取!《我的世界》【PC版】Hypixel服务器成就系统来啦~...
- mysql中计算百分比
- CAD2018安装计算机黑屏,简单几步解决cad2019在win10上打不开的问题