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

经常听说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.

本文来自千锋教育,转载请注明出处。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值