经常听说Python就是一门执行速度低的语言,可能是你的程序中使用了复杂的算法与数据结构,才会导致程序执行速率低的。在Python的标准库中提供了常见的数据结构工开发者使用,不仅执行速率比较快,还可以简化开发者的编程工作。下面我来介绍其中的双向队列:

  collections模块中的deque类,就是双向队列,这种队列可以从头部或者尾部添加或者移除元素,这种操作的所消耗的时间时常数级别的,所以它非常合适表示先进先出的队列。

  # 演示先进先出的队列操作

  from collections import deque

  queue = deque()

  # 添加数据

  queue.append(20)

  queue.append(30)

  queue.append(40)

  print(queue) # deque([20, 30, 40])

  # 移除数据

  queue.popleft()

  print(queue) # deque([30, 40])

  这种情况下,也许有人会说列表也可以做这种操作的,那么区别是什么?区别是列表是单向的,在尾部添加或者移除数据的操作耗时是常数级别的,但是如果在头部添加或者移除数据却是线性级别(耗时与数据大小成正比)的,那么对比双向队列来说,就慢许多了,可以看下面代码

  from time import time

  # 演示先进先出的队列操作

  from collections import deque

  # 在双向队列中添加数据

  queue = deque()

  for i in range(20000):

  queue.append(i)

  print(queue)

  start = time()

  queue.popleft()

  end = time()

  print(end - start) # 3.0994415283203125e-06 不同机器耗时不一样 可以在自己的电脑上测试

  # 在列表中添加相同的数据 做一样的操作

  nums = list()

  for i in range(20000):

  nums.append(i)

  print(nums)

  start = time()

  nums.pop(0)

  end = time()

  print(end - start) # 1.5020370483398438e-05 不同机器耗时不一样 可以在自己的电脑上测试

  从上面两组数据来看,列表list做先进先出操作耗时比双向队列deque完成相应的操作多很多的。所以要完成先进先出的队列操作时应该选择双向队列deque.

Python内置数据结构之双向队列相关推荐

  1. Python培训教程:Python内置数据结构之双向队列

    经常听说Python就是一门执行速度低的语言,可能是你的程序中使用了复杂的算法与数据结构,才会导致程序执行速率低的.在Python的标准库中提供了常见的数据结构工开发者使用,不仅执行速率比较快,还可以 ...

  2. Python教程:Python内置数据结构之双向队列!

    经常听说Python就是一门执行速度低的语言,可能是你的程序中使用了复杂的算法与数据结构,才会导致程序执行速率低的.在Python的标准库中提供了常见的数据结构工开发者使用,不仅执行速率比较快,还可以 ...

  3. Python技术分享:内置数据结构之双向队列

    Python语言内置了很多常见的数据结构,不仅能够让你的程序运行速度更快还能帮助你简化开发流程,下面小千就来给大家介绍一下这个双向队列. collections模块中的deque类,就是双向队列,这种 ...

  4. python内置数据结构教程_python课程第二周 内置数据结构——列表和元组

    5种内置数据结构:列表.元组.字典.集合.字符串.列表.字典.字符串三种被称为线性结构.针对线性结构的操作有:切片.封包和解包.成员运算符.迭代. 针对数据结构的操作有解析式:解析式分为列表解析.生成 ...

  5. python内置数据结构方法的时间复杂度

    转载自:http://www.orangecube.net/python-time-complexity 本文翻译自Python Wiki 本文基于GPL v2协议,转载请保留此协议. 本页面涵盖了P ...

  6. Python内置数据结构及其复杂度

    为了使用python实现复杂数据结构与算法,需要借助python内置的基础和数据结构,主要是list和dict,明白这两种数据结构各操作的复杂度对于问题求解以及计算复杂度有着至关重要的作用. 一.li ...

  7. Python内置数据结构--列表

    本节内容: 列表 元组 字符串 集合 字典 本节先介绍列表. 一.列表 一种容器类型.列表可以包含任何种类的对象,比如说数字.子串.嵌套其他列表.嵌套元组. 任意对象的有序集合,通过索引访问其中的元素 ...

  8. python内置数据结构教程第四版答案_Python数据结构--内置数据结构

    本文提到的所有内容均是基于Python 2.7,在Python 3.x的环境下可能并不完全适用 什么是数据结构 我们可以看一下在百度百科对于数据结构是怎么定义的: 数据结构是指相互之间存在着一种或多种 ...

  9. python内置数据结构_Python基础知识2-内置数据结构(下)

    bytes.bytearray #思考下面例子: a = 1b=aprint(a == b)#True print(a is b)#True print(id(a) is id(b))#False p ...

最新文章

  1. ClearCanvas DICOM 开发系列 一
  2. 398. Random Pick Index - LeetCode
  3. c语言dll注入器,Module Injector-Module Injector(DLL动态库注入器)下载 v1.0--pc6下载站
  4. CodeVS 3027 线段覆盖2(DP)
  5. tensorflow数据读取机制
  6. (十四)函数参数和返回值
  7. RTSP流媒体播放分析-转
  8. 京沪无人驾驶复兴号高铁_河北高铁走到今天这一步,太不容易了...
  9. Struts2出现的问题:
  10. Kinect初识 整理总结
  11. python二进制常量_Python SciPy 常数(Constants)
  12. 四旋翼无人机的三维动态Matlab仿真
  13. 计算机新建表格2,(Word表格的制作计算机基础2.doc
  14. minecraft有自带服务器吗,Minecraft服务器优化教程 —— 让多带50%的玩家不再是梦...
  15. [转]libsvm介绍及使用
  16. greenplum 源码解析 FTS辅助进程工作主流程
  17. 面对疫情,AI能做什么
  18. BeanFactory 和 ApplicationContext 两个容器的区别与联系
  19. 最简单的51超声波测距程序
  20. 7时过2小时是几时_7时过2小时是几时_飞机2小时和高铁7小时你愿意坐哪个?

热门文章

  1. Spring-boot+Vue = Fame 写blog的一次小结
  2. 【云计算的1024种玩法】回忆经典,用虚拟主机重建复古DZ和无心宠物
  3. Unity----Scene加载问题
  4. jfinal框架下使用c3P0连接池连接sql server 2008
  5. MQTT 协议 Client ID 长度不能超过23个字符
  6. 只有你想不到,没有它做不到——可随时变身的模块化机器人
  7. windows查看端口占用以及关闭相应的进程
  8. 钉钉大数据:贵州政府效率意识全国领先
  9. Map容器大小影响key的索引
  10. linux 由一个文件夹复制到另外一个文件夹