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

相比 list 實(shí)現(xiàn)的隊(duì)列,deque 擁有更低的時(shí)間和空間復(fù)雜度。list 實(shí)現(xiàn)在出隊(duì)(pop)和插入(insert)時(shí)的空間復(fù)雜度大約為O(n),deque 在出隊(duì)(pop)和入隊(duì)(append)時(shí)的時(shí)間復(fù)雜度是O(1)。 所以 deque 更有優(yōu)越性,而且 deque 既可以表示隊(duì)列又可以表示棧。
in 操作符
q = collections.deque([1, 2, 3, 4]) print(5 in q) # False print(1 in q) # True
rotate 旋轉(zhuǎn)
# 順時(shí)針 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] # 逆時(shí)針 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 隊(duì)列翻轉(zhuǎn)
請(qǐng)定義一個(gè)隊(duì)列并實(shí)現(xiàn)函數(shù) max_value 得到隊(duì)列里的最大值,要求函數(shù)max_value、push_back 和 pop_front 的均攤時(shí)間復(fù)雜度都是O(1)。
若隊(duì)列為空,pop_front 和 max_value 需要返回 -1
輸入: [“MaxQueue”,“push_back”,“push_back”,“max_value”,“pop_front”,“max_value”] [[],[1],[2],[],[],[]] 輸出: [null,null,null,2,1,2]
既然時(shí)間復(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雙向隊(duì)列詳解的文章就介紹到這了,更多相關(guān)deque雙向隊(duì)列內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python+PyQt5編寫一個(gè)批量圖片添加水印工具(附源碼)
這篇文章主要為大家詳細(xì)介紹了如何基于PyQt5開發(fā)的批量圖片水印添加工具,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2026-02-02
基于Python實(shí)現(xiàn)計(jì)算納什均衡的示例詳解
納什均衡是一種博弈論中的概念,它描述了一種平衡狀態(tài),其中每個(gè)參與者都不能通過獨(dú)立改變其決策來提高自己的利益。本文就來用Python中的Nashpy和PuLP實(shí)現(xiàn)計(jì)算納什均衡,感興趣的可以了解一下2023-02-02
Python使用openpyxl與pandas讀取Excel文件的對(duì)比詳解
在 Python 數(shù)據(jù)處理與分析場景中,Excel 文件作為經(jīng)典的數(shù)據(jù)存儲(chǔ)格式,其讀取與操作效率直接影響開發(fā)流程,openpyxl具備精細(xì)化操作單元格、樣式設(shè)置、圖表編輯等底層能力;而 pandas 依托強(qiáng)大的數(shù)據(jù)結(jié)構(gòu)與矢量化運(yùn)算,本文對(duì)兩種工具進(jìn)行全方位對(duì)比2025-12-12
Python代碼使用 Pyftpdlib實(shí)現(xiàn)FTP服務(wù)器功能
FTP 服務(wù)器,在此之前我都是使用Linux的vsftpd軟件包來搭建FTP服務(wù)器的,現(xiàn)在發(fā)現(xiàn)了利用pyftpdlib可以更加簡單的方法即可實(shí)現(xiàn)FTP服務(wù)器的功能 ,需要的朋友可以參考下2019-07-07
python 遍歷pd.Series的index和value
今天小編就為大家分享一篇python 遍歷pd.Series的index和value,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-11-11

