python中的deque雙向隊列詳解
python deque(雙向)隊列
Python 標(biāo)準(zhǔn)庫中包含了四種隊列,分別是 queue.Queue / asyncio.Queue / multiprocessing.Queue / collections.deque

相比 list 實現(xiàn)的隊列,deque 擁有更低的時間和空間復(fù)雜度。list 實現(xiàn)在出隊(pop)和插入(insert)時的空間復(fù)雜度大約為O(n),deque 在出隊(pop)和入隊(append)時的時間復(fù)雜度是O(1)。 所以 deque 更有優(yōu)越性,而且 deque 既可以表示隊列又可以表示棧。
in 操作符
q = collections.deque([1, 2, 3, 4]) print(5 in q) # False print(1 in q) # True
rotate 旋轉(zhuǎn)
# 順時針 q = collections.deque([1, 2, 3, 4]) q.rotate(1) print(q) # [4, 1, 2, 3] q.rotate(1) print(q) # [3, 4, 1, 2] # 逆時針 q = collections.deque([1, 2, 3, 4]) q.rotate(-1) print(q) # [2, 3, 4, 1] q.rotate(-1) print(q) # [3, 4, 1, 2]
copy
d.append(1) d.append(2) deque([1, 2]) d1 = d.copy() deque([1, 2])
extend
d.clear() d.append(1) d.extend([3,4,5]) deque([1, 3, 4, 5])
extendleft
d.clear() d.append(1) d.extendleft([3,4,5]) deque([5, 4, 3, 1])
index
d.extend(["a","b","c","d","e","f"])
deque(['a', 'b', 'c', 'd', 'e','f'])
d.index("c",0,4) #指定查找的區(qū)間
d.index("c",0,2)
error...d.insert(位置,元素) 在指定位置插入元素 d.remove(元素) 刪除指定元素 d.reverse 隊列翻轉(zhuǎn)
請定義一個隊列并實現(xiàn)函數(shù) max_value 得到隊列里的最大值,要求函數(shù)max_value、push_back 和 pop_front 的均攤時間復(fù)雜度都是O(1)。
若隊列為空,pop_front 和 max_value 需要返回 -1
輸入: [“MaxQueue”,“push_back”,“push_back”,“max_value”,“pop_front”,“max_value”] [[],[1],[2],[],[],[]] 輸出: [null,null,null,2,1,2]
既然時間復(fù)雜度是O(1)
from collections import deque
class MaxQueue:
def __init__(self):
self.d = deque()
def max_value(self) -> int:
return max(self.d) if self.d else -1
def push_back(self, value: int) -> None:
self.d.append(value)
def pop_front(self) -> int:
return self.d.popleft() if self.d else -1到此這篇關(guān)于python中的deque雙向隊列詳解的文章就介紹到這了,更多相關(guān)deque雙向隊列內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python+PyQt5編寫一個批量圖片添加水印工具(附源碼)
這篇文章主要為大家詳細(xì)介紹了如何基于PyQt5開發(fā)的批量圖片水印添加工具,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2026-02-02
Python使用openpyxl與pandas讀取Excel文件的對比詳解
在 Python 數(shù)據(jù)處理與分析場景中,Excel 文件作為經(jīng)典的數(shù)據(jù)存儲格式,其讀取與操作效率直接影響開發(fā)流程,openpyxl具備精細(xì)化操作單元格、樣式設(shè)置、圖表編輯等底層能力;而 pandas 依托強大的數(shù)據(jù)結(jié)構(gòu)與矢量化運算,本文對兩種工具進行全方位對比2025-12-12
Python代碼使用 Pyftpdlib實現(xiàn)FTP服務(wù)器功能
FTP 服務(wù)器,在此之前我都是使用Linux的vsftpd軟件包來搭建FTP服務(wù)器的,現(xiàn)在發(fā)現(xiàn)了利用pyftpdlib可以更加簡單的方法即可實現(xiàn)FTP服務(wù)器的功能 ,需要的朋友可以參考下2019-07-07
python 遍歷pd.Series的index和value
今天小編就為大家分享一篇python 遍歷pd.Series的index和value,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11

