Python collections模块中的deque类是一种双向队列(double-ended queue,双端队列)。从该队列的头部或尾部插入或移除一个元素,时间复杂度为O(1),就是不会因数据的大小及位置等因素而变化。
而对内置的list类型,从list尾部插入或删除元素,时间复杂度也是O(1),但是从list头部插入或移除元素,时间复杂度就是O(n),这与deque相比,要慢得多。
deque 可以迭代,可以使用函数len求长度,可以用 in 操作符判断是否含有某一元素,支持通过索引获取元素;
下面是一些deque的方法:
>>> from collections import deque
>>> d = deque('ghi')
>>> d
deque(['g', 'h', 'i'])
>>> for elem in d: # deque 可迭代
print(elem)
# 不带 >>> 的是输出
g
h
i
>>> d.append('j')
>>> d
deque(['g', 'h', 'i', 'j'])
>>> d.appendleft('f')
>>> d
deque(['f', 'g'