优先队列,有别于普通队列的先入先出(虽然字面上还是队列,但其实无论从含义还是实现上,和普通队列都有很大的区别),也有别于栈的先入后出。在实现上,它一般通过堆这一数据结构,而堆其实是一种完全二叉树,它会对进入容器的元素进行排序(根据事先指定的规则),出队的顺序则会是二叉树的根结点代表的元素。

1. queue 与 queue.PriorityQueue

import queueclass ComparableObj:                  # 可比较对象,放入优先队列中def __init__(self, **):...def __cmp__(self, other):         # 比较规则的指定,谁做根(大顶堆,小顶堆)# 返回的是布尔类型...return True/Flase...que = Queue.PriorityQueue()que.put(ComparableObj(**))
que.put(ComparableObj(**))
...que.qsize()# 优先队列中元素的个数que.get()# 返回根(优先队列第一个出队的元素)

2. heapq:将list转换为等价的优先队列

import heapq li = [5, 7, 9, 1, 3] heapq.heapify(li) # [1, 3, 9, 7, 5]heapq.heappush(li,4) #   [1, 3, 4, 7, 5, 9]heapq.heappop(li)#  1# li ⇒ [3, 5, 4, 7, 9]

references

  • Python 的优先队列示例
  • Heap queue (or heapq) in Python

Python 标准库 —— queue、heapq与PriorityQueue相关推荐

  1. Python标准库queue模块原理浅析

    Python标准库queue模块原理浅析 本文环境python3.5.2 queue模块的实现思路 作为一个线程安全的队列模块,该模块提供了线程安全的一个队列,该队列底层的实现基于Python线程th ...

  2. Python基础篇(十六)-- Python标准库模块之heapq与bisect

    1 heapq 1.1 介绍 堆是非线性的树形的数据结构,有2种堆,最大堆与最小堆.Python 的heapq 模块默认的是最小堆.堆数据结构最重要的特征是 heap[0] 永远是最小的元素. 最大堆 ...

  3. Python标准库介绍

    1. 关于Python标准库 众所周知,Python是一个依赖强大的组件库完成对应功能的语言,为了便捷实现各项功能,前辈大牛们打造了多种多样的工具库公开提供给大众使用,而越来越多的库已经因为使用的广泛 ...

  4. Python标准库asyncio模块基本原理浅析

    Python标准库asyncio模块基本原理浅析 本文环境python3.7.0 asyncio模块的实现思路 当前编程语言都开始在语言层面上,开始简化对异步程序的编程过程,其中Python中也开始了 ...

  5. 10个常用python标准库_【循序渐进学Python】11.常用标准库

    安装完Python之后,我们也同时获得了强大的Python标准库,通过使用这些标准库可以为我们节省大量的时间.这里是一些常用标准库的简单说明.更多的标准库的说明,可以参考Python文档 sys 模块 ...

  6. 5个python标准库及作用_零基础编程——Python标准库使用

    摘要 书接前文: 本文将讲解Python标准库内容,有操作系统接口os.文件路径通配符glob.命令行参数sys.正则表达式re.数学math.日期与时间.数据压缩.性能评估等,我们只需要知道有些什么 ...

  7. python标准库学习笔记

    原创:python标准库学习笔记 数据结构 bisect 模块里实现了一个向列表插入元素时也会顺便排序的算法. struct - 二进制数据结构:用途:在 Python 基本数据类型和二进制数据之间进 ...

  8. 转--Python标准库之一句话概括

    作者原文链接 想掌握Python标准库,读它的官方文档很重要.本文并非此文档的复制版,而是对每一个库的一句话概括以及它的主要函数,由此用什么库心里就会有数了. 文本处理 string: 提供了字符集: ...

  9. Python 标准库

    Python 标准库 标准库 标准库列表如下 标准库 Python 标准库非常庞大,所提供的组件涉及范围十分广泛,正如以下内容目录所显示的.这个库包含了多个内置模块 (以 C 编写),Python 程 ...

最新文章

  1. 残差网络(Residual Networks, ResNets)
  2. 基础运维:shell入门
  3. gson 入门_Google GSON入门
  4. java及python调用RabbitMQ
  5. ECMAScript6 模版字符串
  6. esp8266 继电器接线图_esp8266控制继电器问题(通电瞬间继电器吸合断开一次)
  7. 使用Idea搭建Spring Boot环境
  8. 《啊哈算法》的Java实现| 第五章:图
  9. java面试之简述一下 Java 垃圾回收机制?
  10. 计算机c 逻辑符号,c语言基本符号
  11. 刷题总结——玉蟾宫(bzoj3039单调栈)
  12. 小谷机器人连不上wifi_小谷连不上网怎么办
  13. 使用Proxmox 和 Deskpool 搭建桌面云系统
  14. 武汉科技大学计算机学院温文,第五届华中地区计算机类院校学生领袖峰会成功举行...
  15. 单元格内容分列多行_excel如何将同一个单元格的多行内容拆分
  16. 政府、事业单位短信通知解决方案
  17. Python爬虫:输入公司名称,爬取企查查网站中的公司信息
  18. window xp 自动登陆系统
  19. 笔记本电脑总是莫名其妙自动睡眠,记录一次排查过程
  20. 星际争霸秘籍 星际争霸补丁

热门文章

  1. python爬虫审查元素_python爬虫3——获取审查元素(板野友美吧图片下载)
  2. 一、安装mysql 单机版
  3. 隐藏窗体关闭按钮_VB编程(五)按钮和窗体
  4. php 遍历数组 只显示1个,求高手指点,foreach遍历三维数组时只能遍历出第一个子级,这是为什么呢?...
  5. word敲空格文字不后退_聊聊Word中的几种缩进(中)
  6. python基础语法训练
  7. MySQL之 事务日志: redo和undo
  8. flamingo源码分析(1) :单例模式
  9. 基于Opencv3.0对图像进行透视变换
  10. 云南省电子计算机高级,计算机基础知识-云南省电子信息高级技工学校.ppt