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

Python教程:Python内置数据结构之双向队列!,第1张

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

  经常听说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教程:Python内置数据结构之双向队列!全部内容,希望文章能够帮你解决Python教程:Python内置数据结构之双向队列!所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1185810.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存