Python3使用collections的deque双队列进行堆栈或队列操作

版权声明:转载请注明作者(独孤尚良dugushangliang)出处:https://blog.csdn.net/dugushangliang/article/details/102856073

 

Python内置的list可以直接用来堆栈操作,即先进后出,就通过append()和pop()实现即可。

如果是队列操作,即先进先出,则通过append()和pop(0)也能实现,不过这个效率要慢很多。因为移除第一个后则后面的需要一个个往前移动。

deque这个双队列操作,是优化之后的选择,用这个会提高运行效率。

#导入相应的模块
from collections import deque

查看deque和list的函数情况比对:

由此可看出,主要是增加了append、extend、pop这三个操作的左端操作方法。

其中popleft()等同于pop(0),但性能上前者优于后者。appendleft()则是在左侧添加元素。这里需要注意的是extendleft()操作。

由此可得,extend的操作类似于一个循环操作,即用于并入a的b队列,其前面的元素先进入,末位元素则后进入。即:a.extend(b)是把b追加到a后,b的末位元素成为a的末位元素。a.extendleft(b)则是把b逐个追加到a,此时b的末位元素成为a的首位元素。这两种的共性是:b的末位元素始终在a的两端,如果是left模式则是首位,否则就是末位。

遗憾的是:deque的pop操作,是无参数的,即只能去掉两端的,不能指定去掉某个位置的元素,而list的pop可以。

 

独孤尚良dugushangliang——著

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值