import heapq    #导入heapq堆模块
import random
data = random.sample(range(1000),10)
print(data)
heapq.heapify(data) #堆化随机测试数据
print('堆化随机测试数据:',data)
heapq.heappush(data,30) #新元素入堆,自动调整堆
print('插入30后的堆数据:',data)
heapq.heappush(data,5)
print('插入5后的堆数据:',data)
print('删除的数据为:',heapq.heappop(data),'返回并删除最小元素,自动调整堆后的堆数据:',data)
print('弹出最小元素,同时新元素入堆后的数据:',heapq.heappushpop(data,1000))
print('弹出最小元素,同时新元素入堆后的数据',heapq.heapreplace(data,500))
print('弹出最小元素,同时新元素入堆后的数据',heapq.heapreplace(data,700))
print('返回最大的前3个元素',heapq.nlargest(3,data) ) #返回最大的前3个元素
print('返回指定排序规则下最小的3个元素',heapq.nsmallest(3,data,key=str)) #返回指定排序规则下最小的3个元素
print(data) '''
输出结果
[80, 366, 834, 269, 829, 295, 583, 952, 548, 668]
堆化随机测试数据: [80, 269, 295, 366, 668, 834, 583, 952, 548, 829]
插入30后的堆数据: [30, 80, 295, 366, 269, 834, 583, 952, 548, 829, 668]
插入5后的堆数据: [5, 80, 30, 366, 269, 295, 583, 952, 548, 829, 668, 834]
删除的数据为: 5 返回并删除最小元素,自动调整堆后的堆数据: [30, 80, 295, 366, 269, 834, 583, 952, 548, 829, 668]
弹出最小元素,同时新元素入堆后的数据: 30
弹出最小元素,同时新元素入堆后的数据 80
弹出最小元素,同时新元素入堆后的数据 269
返回最大的前3个元素 [1000, 952, 834]
返回指定排序规则下最小的3个元素 [1000, 295, 366]
[295, 366, 583, 500, 668, 834, 700, 952, 548, 829, 1000]
'''

Python_heapq的更多相关文章

随机推荐

  1. 干掉头疼的finished with non-zero exit value 2

    很多次会出现 finished with non-zero exit value 2  . Error:Execution failed for task ':app:dexDebug'. > ...

  2. 【一天一道LeetCode】#27. Remove Element

    一天一道LeetCode系列 (一)题目 Given an array and a value, remove all instances of that value in place and ret ...

  3. Linux自动安装JDK的shell脚本

    Linux自动安装JDK的shell脚本 A:本脚本运行的机器,Linux B:待安装JDK的机器, Linux 首先在脚本运行的机器A上确定可以ssh无密码登录到待安装jdk的机器B上,然后就可以在 ...

  4. Learning ROS for Robotics Programming Second Edition学习笔记(十) indigo Gazebo rviz slam navigation

    中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 moveit是书的最后一章,由于对机械臂完全不知,看不懂 ...

  5. Shell编程入门(第二版)(下)

    ... ... command n done #select把关键字中的每一项做成类似表单,以交互的方式执行do和done之间的命令 示例-select.sh [python] view plainc ...

  6. how tomcat works 六 生命周期

    我觉得这一章叫tomcat中的观察者模式,比较好! 首先,不要看本章,请查看一下关于观察者模式的资料比较好. 推荐以下知识点 基础篇 设计模式之禅----观察者模式 大家可以找到pdf阅读一下 另外本 ...

  7. 用C语言绘制一条标准的余弦曲线

    #include<stdio.h> #include<math.h> int main() { double y; int x,m; for(y=1;y>=-1;y-=0 ...

  8. PHP-MVC和Smarty初探笔记

    在慕课网上学习了PHP的MVC的基础知识,记录一下笔记: 等待更新~

  9. C# 操作Excel数据透视表

    一.概述 数据透视表(Pivot Table)是一种交互式的表,可以进行某些计算,如求和与计数等,可动态地改变透视表版面布置,也可以重新安排行号.列标和页字段.当改变版面布置时,数据透视表也会按照新的 ...

  10. 基于event 实现的线程安全的优先队列(python实现)

    event 事件是个很不错的线程同步,以及线程通信的机制,在python的许多源代码中都基于event实现了很多的线程安全,支持并发,线程通信的库 对于优先队列的堆实现,请看<python下实现 ...