python雙端隊列


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:只讀屬性,隊列中的最大元素數

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM