Python中提供了四种内置的队列实现,特别地其中的优先级队列可以用来实现堆。此外,在Python中我们也直接使用堆。熟练掌握这些数据结构,在问题求解时可以大大简化代码的实现。文末将结合一道Leetcode题目来作为演示。

1. 普通队列(FIFO)

这是最一般的队列,核心操作有put和get,这对应了一般数据结构教材中的push和pop。

from queue import Queueq = Queue()
q.put(0)
q.put(5)
q.put(3)
print('FIFO', q.queue)    # [0, 5, 3]head = q.get()
print(head)
print(q.queue)            # [5, 3]

执行上述代码,输出结果如下:

FIFO deque([0, 5, 3])
0
deque([5, 3])


2. LIFO队列

这其实相当于一般数据结构教材中的“栈”结构,也就是后进先出。核心操作仍然是put和get(对应了push和pop)。

from queue import LifoQueue
lifoQueue = LifoQueue()
lifoQueue.put(0)
lifoQueue.put(5)
lifoQueue.put(3)
print('LIFO', lifoQueue.queue)lifoQueue.get()
lifoQueue.get()
print(lifoQueue.queue)

执行上述代码,输出结果如下:

LIFO [0, 5, 3]
[

Python中的四种队列(queue)、堆(heap)相关推荐

  1. python的ols_【量化工具】OLS在python中的四种实现方式

    在p-quant中,线性回归应该是最最最重要的统计方法了,没有之一:OLS又是线性回归中最常见的形式,在python中可以利用多个方法来实现 考虑线性回归如下形式 一.sklearn from skl ...

  2. Python中的四种交换数值的方法

    交换两个变量的值方法,这个面试题如果只写一种当然很简单,没什么可以说的. 今天这个面试是问大家有几种办法来实现交换两个变量的值. 在没开始看具体答案前,你可以先想想看 下面分别来说说这几种方法 方法一 ...

  3. python中几种队列Queue用法区别

    python中使用到的队列模块大致有三个: 1.from queue import Queue 此模块适用于线程间通信,但不能用于进程间通信. 示例代码1:   [注意:此时代码存在错误!!!] im ...

  4. python队列线程池_实例详解:python高级编程之消息队列(Queue)与进程池(Pool)

    今天为大家带来的内容是:python高级编程之消息队列(Queue)与进程池(Pool),结合了实例的形式详细分析了Python消息队列与进程池的相关原理.使用技巧与操作注意事项!!! Queue消息 ...

  5. java object 引用类型_java中的四种引用类型

    java中的四种引用类型 一.强引用 强引用是最常见的,把一个对象赋给一个引用变量,这个引用变量就是一个强引用.当一个对象被强引用变量引用时,他处于可达状态,它是不会被GC回收的,即使该对象以后永远不 ...

  6. 计算机网络中的时延有哪几部分,计算机网络中的四种延迟分别是什么?

    计算机网络中的四种延迟分别是:节点处理延迟 .排队延迟.发送延迟.传播延迟. 1.节点处理延迟 数据更改在一个服务器上完成与该更改出现在另一个服务器上之间所用的时间(例如在发布服务器上进行更改和该更改 ...

  7. 计算机网络中什么叫总衰耗_计算机网络中的四种延迟分别是什么?

    展开全部 计算e69da5e887aa62616964757a686964616f31333431346365机网络中的四种延迟分别是:节点处理延迟 .排队延迟.发送延迟.传播延迟. 1.节点处理延迟 ...

  8. python 中的最大堆和最小堆(heapq库)

    目录 首先来看一下什么是最大堆和最小堆? python heapq库中的一些常用方法 小试牛刀 首先来看一下什么是最大堆和最小堆? 最大堆:一种经过排序的完全二叉树,其中任意非终端节点数值均不小于其左 ...

  9. python函数分几种_简单了解Python中的几种函数

    python是支持多种范型的语言,可以进行所谓函数式编程,其突出体现在有这么几个函数: filter.map.reduce.lambda.yield lambda lambda函数的使用方法:在lam ...

最新文章

  1. Java实现MD5(32/16位大小写)加密
  2. php 导出csv字符串,PHP CSV字符串到数组
  3. go 定义一个结构体并赋初始值_Go中必须谈论的四个迷点
  4. java.lang.Class.getDeclaredMethod()方法详解
  5. 多态_月隐学python第18课
  6. web前端常用代码于面试等资源
  7. jboss与nginx_JBoss BRMS与JasperReports进行报告
  8. java中exception_Java中的异常 Exceptions
  9. 一文读懂 - 云上用户如何灵活应用定制化网络服务
  10. WSGI、flup、fastcgi、web.py的关系
  11. Messenger Group Redesign - 缓解群组社交压力设计思考
  12. MATLAB最简单教程
  13. WAP1.x协议栈浅析
  14. python记忆口诀-最良心的软件可以良心到什么程度?
  15. iOS 拼音 Swift K3Pinyin
  16. android 拨打电话 发送短信 权限,Android中发送短信和拨打电话
  17. python给pdf加图片签名_如何在PDF中添加文本和图像(例如签名)?
  18. java 解码和加密 汉信码_java中的编码与解码
  19. Hadoop数据本地化
  20. Java回炉之File

热门文章

  1. ppython3 关于agg函数的用法(一般与groupby函数连用)
  2. 浮动带来的问题以及清除浮动的几种方式
  3. bzoj 4398 福慧双修 —— 二进制分组+多起点最短路
  4. 互联网及相关公司的求职经历分享
  5. 请编写函数判断一个数是不是素数
  6. 图像处理: 设计 自定义透明度 水印
  7. 中华英才网裁员,五成员工可拿(N+3)*月薪的离职补偿
  8. linux内核空间内存动态申请
  9. 图解通信原理与案例分析-8:以太网通信案例及其物理层工作原理深入剖析--物理层编码
  10. Python 自然语言处理(基于SnowNLP)