deque模塊是python標準庫collections中的一項,它提供了兩端都可以操作的序列,這意味着,在序列的前後你都可以執行添加或刪除操作。
1.創建deque序列:
from collections import deque
d=deque()
2.deque提供了類似list的操作方法:
d=deque()
d.append(3)
d.append(8)
d.append(1)
那麼此時d=deque([3,8,1]),len(d)=3,d[0]=3,d[-1]=1
3.兩端都使用pop:
d=deque(‘12345’)
那麼d=deque(['1', '2', '3', '4', '5'])
d.pop()拋出的是’5’,d.popleft()拋出的是’1’,可見默認pop()拋出的是最後一個元素。
4.限制deque的長度
d=deque(maxlen=20)
for i in range(30):
d.append(str(i))
此時d的值爲d=deque(['10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29'], maxlen=20),可見當限制長度的deque增加超過限制數的項時,另一邊的項會自動刪除。自動刪除左邊數據
5.添加list各項到deque中:
d=deque([1,2,3,4,5])
d.extend([0])
那麼此時d=deque([1,2,3,4,5,0])
d.extendleft([6,7,8])
此時d=deque([8, 7, 6, 1, 2, 3, 4, 5, 0])
代碼示例
創建雙向隊列
import collections d = collections.deque()
append(往右邊添加一個元素
import collections d = collections.deque() d.append(1) d.append(2) print(d) #輸出:deque([1, 2])
appendleft(往左邊添加一個元素)
import collections d = collections.deque() d.append(1) d.appendleft(2) print(d) #輸出:deque([2, 1])
clear(清空隊列)
import collections d = collections.deque() d.append(1) d.clear() print(d) #輸出:deque([])
copy(淺拷貝)
import collections d = collections.deque() d.append(1) new_d = d.copy() print(new_d) #輸出:deque([1])
count(返回指定元素的出現次數)
import collections d = collections.deque() d.append(1) d.append(1) print(d.count(1)) #輸出:2
extend(從隊列右邊擴展一個列表的元素)
import collections d = collections.deque() d.append(1) d.extend([3,4,5]) print(d) #輸出:deque([1, 3, 4, 5])
extendleft(從隊列左邊擴展一個列表的元素)
import collections d = collections.deque() d.append(1) d.extendleft([3,4,5]) print(d) # # #輸出:deque([5, 4, 3, 1])
index(查找某個元素的索引位置)
import collections d = collections.deque() d.extend(['a','b','c','d','e']) print(d) print(d.index('e')) print(d.index('c',0,3)) #指定查找區間 #輸出:deque(['a', 'b', 'c', 'd', 'e']) # 4 # 2
insert(在指定位置插入元素)
import collections d = collections.deque() d.extend(['a','b','c','d','e']) d.insert(2,'z') print(d) #輸出:deque(['a', 'b', 'z', 'c', 'd', 'e'])
pop(獲取最右邊一個元素,並在隊列中刪除)
import collections d = collections.deque() d.extend(['a','b','c','d','e']) x = d.pop() print(x,d) #輸出:e deque(['a', 'b', 'c', 'd'])
popleft(獲取最左邊一個元素,並在隊列中刪除)
import collections d = collections.deque() d.extend(['a','b','c','d','e']) x = d.popleft() print(x,d) #輸出:a deque(['b', 'c', 'd', 'e'])
remove(刪除指定元素)
import collections d = collections.deque() d.extend(['a','b','c','d','e']) d.remove('c') print(d) #輸出:deque(['a', 'b', 'd', 'e'])
reverse(隊列反轉)
import collections d = collections.deque() d.extend(['a','b','c','d','e']) d.reverse() print(d) #輸出:deque(['e', 'd', 'c', 'b', 'a'])
rotate(把右邊元素放到左邊)
import collections d = collections.deque() d.extend(['a','b','c','d','e']) d.rotate(2) #指定次數,默認1次 print(d) #輸出:deque(['d', 'e', 'a', 'b', 'c'])