dqque :双端队列,可以快速的从另外一侧追加和推出对象,deque是一个双向链表,针对list连续的数据结构插入和删除进行优化。它提供了两端都可以操作的序列,这表示在序列的前后你都可以执行添加或删除操作。
通过上图可以看出,deque 需要两个参数,iterable.可迭代对象;maxlen:个数
我现在有一个需求,要求有一个数组,长度为5 ,每次都更新插入,将旧的删除。接下来对比一下,采用deque 和list 两种方式:
from collections import deque
import time
# 采用双向队列,采用.append()插入,会自动将最左边的的删除
time0 = time.time()
# 初始化due
dq = deque([1,2,3,4,5],maxlen=5)
print(dq)
dq.append(6)
print(dq)
time1 = time.time()
print('deque插入所用时间',time1-time0)
#------------采用列表方式,先append 插入,在使用.pop(0)删除-----------------
list = [1,2,3,4,5]
list.append(6)
list.pop(0)
print(list)
time2 = time.time()
print('list插入所用时间',time2-time1)
# 结果输出
deque([1, 2, 3, 4, 5], maxlen=5)
deque([2, 3, 4, 5, 6], maxlen=5)
deque插入所用时间 0.0002040863037109375
[2, 3, 4, 5, 6]
list插入所用时间 0.0014698505401611328
我们发现,使用deque 的方式不仅代码量减少,而且所用时间也比list的方式要高效。