python基础:deque的用法

deque(maxlen=N) 创建了一个固定长度的队列,当有新的记录加入而队列已满时会自动移动除最老的那条记录。

1 from collections import deque
2 d=deque(maxlen=3)
3 d.append(1)
4 d.append(2)
5 d.append(3)
6 print(d)
7 print(type(d))
8 d.append(4)
9 print(d)
View Code

输出如下:

deque([1, 2, 3], maxlen=3)
<class 'collections.deque'>
deque([2, 3, 4], maxlen=3)

虽然通过列表操作(append、del)也能够完成deque的功能,但是队列的这种解决方案要更优雅的多,运行速度也将更快。如果deque不指定队列长度,将得到一个无界限的队列,可以在两端执行添加和弹出操作,例如:

 1 from collections import deque
 2 d=deque()
 3 d.append(1)
 4 d.append(2)
 5 d.append(3)
 6 print(d)
 7 d.appendleft(4)
 8 print(d)
 9 d.pop()
10 print(d)
11 d.popleft()
12 print(d)
View Code

输出如下:

deque([1, 2, 3])
deque([4, 1, 2, 3])
deque([4, 1, 2])
deque([1, 2])

从队列两端添加或者弹出元素的复杂度都是O(1)。这和列表不同,当从列表的头部插入或者移除元素时,列表的复杂度为O(N)

posted @ 2017-05-28 22:10  古怪的一阵风  阅读(2952)  评论(0编辑  收藏  举报