deque
固定大小的队列
from collections import deque
q = deque(maxlen=3)
q.append(1)
q.append(2)
q.append(3)
print(q)
# deque([1, 2, 3], maxlen=3)
q.append(4)
print(q)
# deque([2, 3, 4], maxlen=3)
q.append(5)
print(q)
# deque([3, 4, 5], maxlen=3)
q = deque()
q.append(1)
q.append(2)
q.append(3)
print(q)
# deque([1, 2, 3])
q.appendleft(4)
print(q)
# deque([4, 1, 2, 3])
print(q.pop())
# 3
print(q)
# deque([4, 1, 2])
print(q.popleft())
# 4
无限大小的队列
在队列两端插入或删除元素时间复杂度都是 O(1) ,
而在列表的开头插入或删除元素的时间复杂度为 O(N) 。
from collections import deque
q = deque()
q.append(1)
q.append(2)
q.append(3)
print(q)
# deque([1, 2, 3])
q.appendleft(4)
print(q)
# deque([4, 1, 2, 3])
print(q.pop())
# 3
print(q)
# deque([4, 1, 2])
print(q.popleft())
# 4