deque 实现了两端都可以操作的队列,相当于双端队列,与列表很相似。
- from collections import deque
-
- #创建 deque
- d1 = deque([1,2,3])
-
- #单个数据入队
- d1.append('a')
- d1.appendleft('A')
- print(d1)
-
- #可迭代对象入队
- d1.extend(['b','c'])
- d1.extendleft(['B'])
- print(d1)
-
- #指定位置插入数据
- d1.insert(2,'T') #插在 2 的位置(左数第 3 位)
- print(d1)
-
- deque(['A', 1, 2, 3, 'a'])
- deque(['B', 'A', 1, 2, 3, 'a', 'b', 'c'])
- deque(['B', 'A', 'T', 1, 2, 3, 'a', 'b', 'c'])
-
- #出队
- print(d1.pop()) #将队列尾部的数据弹出,并作为返回值
- print(d1.popleft()) #将队列头部的数据弹出,并作为返回值
- print(d1)
-
- c
- B
- deque(['A', 'T', 1, 2, 3, 'a', 'b'])
-
- #复制队列
- d2 = d1.copy()
- print(d2)
-
- deque(['A', 'T', 1, 2, 3, 'a', 'b'])
-
- #指定值的索引
- print(d1.index('A'))
- #指定值的数量
- print(d1.count('A'))
-
- 0
- 1
-
- #翻转
- d2.reverse()
- print(d2)
-
- deque(['b', 'a', 3, 2, 1, 'T', 'A'])
-
- #删除
- d2.remove('T')
- print(d2)
-
- #全部清空
- d2.clear()
- print(d2)
-
- deque(['b', 'a', 3, 2, 1, 'A'])
- deque([])
-
- #指定队列的长度
- d3 = deque(maxlen=5)
- d3.extend([1,2,3,4,5])
- d3.append('A')
- print(d3)
-
- deque([2, 3, 4, 5, 'A'], maxlen=5)