Python的deque模塊,它是collections庫的一部分。deque實現了雙端隊列,意味着你可以從隊列的兩端加入和刪除元素。
簡單實例:
from collections import deque # 實例化一個deque對象 d = deque() # 和list的操作有些類似 d.append('a') d.append('b') d.append('c') print(len(d)) print(d[0]) print(d[-1]) print(d)
從隊列兩端pop數據
from collections import deque # 從隊列的兩端pop數據 d1 = deque() d1 = deque('abcde') print(d1) d1.popleft() print(d1) d1.pop() print(d1)
我們也可以限制deque中元素的個數,當deque的元素數超過能存放的元素數,它會從相對一端pop元素。例如:
from collections import deque d = deque(maxlen=5) # 限制元素為5 d.append(1) d.append(2) d.append(3) d.append(4) d.append(5) print(d) d.append(6) d.append(7) print(d)
我們也可以擴展deque中的元素:
from collections import deque d = deque([1, 2, 3, 4, 5]) print(d) d.extendleft([0]) d.extend([6, 7, 8]) print(d)
deque中的方法有:
append(x):把元素x添加到隊列的右端
appendleft(x):把元素x添加到隊列的左端
clear():清空隊列中所有元素
copy():創建隊列的淺拷貝
count(x):計算隊列中等於x元素的個數
extend(iterable):在隊列右端通過添加元素擴展
extendleft(iterable):在隊列左端通過添加元素擴展
index(x[, start[, stop]]):返回x元素在隊列中的索引,放回第一個匹配,如果沒有找到拋ValueError
insert(i, x):在隊列的i索引處,插入x元素
pop():移除並返回deque右端的元素,如果沒有元素拋IndexError
popleft():移除並返回deque左端的元素,如果沒有元素拋IndexError
remove(value):刪除第一個匹配value的元素,如果沒有找到拋ValueError
reverse():在原地反轉隊列中的元素
rotate(n):把隊列左端n個元素放到右端,如果為負值,右端到左端。如果n為1,等同d.appendleft(d.pop())
maxlen:只讀屬性,隊列中的最大元素數