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. python的exec

    exec "一条python语句" 这样会执行python 语句.用于执行储存在字符串或文件中的Python语句. 当然 也可以 用 exec(str)这种方式, 总之一句话,尽量 ...

  2. 《java入门第一季》之面向对象面试题

    1:方法重写和方法重载的区别?方法重载能改变返回值类型吗? 方法重写: 在子类中,出现和父类中一模一样的方法声明的现象. 方法重载: 同一个类中,出现的方法名相同,参数列表不同的现象. 方法重载能改变 ...

  3. C++多重继承与虚拟继承

    本文只是粗浅讨论一下C++中的多重继承和虚拟继承. 多重继承中的构造函数和析构函数调用次序 我们先来看一下简单的例子: #include <iostream> using namespac ...

  4. 【数值分析】误差的分析与减少及Matlab解线性方程的四种方法

    1.误差的来源 模型误差:数学模型与实际问题之间的误差 观测误差:测量数据与实际数据的误差 方法误差:数学模型的精确解与数值方法得到的数值解之间的误差:例如 舍入误差:对数据进行四舍五入后产生的误差 ...

  5. Android使用SVG矢量动画(二)

    上篇我们学习了怎么显示SVG矢量图像,当然还有一个更强大的功能,就是让SVG图像动起来,先上一张效果图吧: 要实现上述动画效果,就得用AnimatedVectorDrawable这个类了,它就是负责V ...

  6. CAS实现单点登录--错误记录

    遇到的错误: 生成证书: 1.   命令:keytool -genkey -alias  smalllove -keyalg RSA -keystore C:/keys/smallkey  错误:ja ...

  7. PS 滤镜——素描算法(一)

    这个算法结合高斯滤波和图层混合中的颜色减淡模式实现. 可以参考相关博客: http://blog.csdn.net/wsfdl/article/details/7610634 本文增加了一点调色,使得 ...

  8. C语言之多线程机制(程序可以同时被执行而不会相互干扰)

    接触过linux的人或多或少知道,linux有多线程的机制,也就是说程序可以同时执行,不受干扰,关于这个在我以前的博文里有过类似模拟的时间片轮转程序,跟这个其实是类似的.其实在window上,线程的头 ...

  9. 初探linux子系统集之led子系统(一)

    就像学编程第一个范例helloworld一样,学嵌入式,单片机.fpga之类的第一个范例就是点亮一盏灯.对于庞大的linux系统,当然可以编写一个字符设备驱动来实现我们需要的led灯,也可以直接利用g ...

  10. nasm预处理器(2)

    多行宏 %macro: %macro foo 2 push rax push rbx mov rax,%1 mov rbx,%2 pop rbx pop rax %endmacro 宏名称后的数字代表 ...