python中的deque雙向隊(duì)列詳解
python deque(雙向)隊(duì)列
Python 標(biāo)準(zhǔn)庫(kù)中包含了四種隊(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)文章
tensorflow 重置/清除計(jì)算圖的實(shí)現(xiàn)
今天小編就為大家分享一篇tensorflow 重置/清除計(jì)算圖的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-01-01python利用有道翻譯實(shí)現(xiàn)"語(yǔ)言翻譯器"的功能實(shí)例
小編就為大家分享一篇python利用有道翻譯實(shí)現(xiàn)"語(yǔ)言翻譯器"的功能實(shí)例。具有比較好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2017-11-11python 爬取騰訊視頻評(píng)論的實(shí)現(xiàn)步驟
這篇文章主要介紹了python 爬取騰訊視頻評(píng)論的實(shí)現(xiàn)步驟,幫助大家更好的理解和學(xué)習(xí)使用python爬蟲,感興趣的朋友可以了解下2021-02-02Pytorch轉(zhuǎn)keras的有效方法,以FlowNet為例講解
這篇文章主要介紹了Pytorch轉(zhuǎn)keras的有效方法,以FlowNet為例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05用Python實(shí)現(xiàn)數(shù)據(jù)篩選與匹配實(shí)例
大家好,本篇文章主要講的是用Python實(shí)現(xiàn)數(shù)據(jù)篩選與匹配實(shí)例,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下2022-02-02將FileStorage對(duì)象高效轉(zhuǎn)換為NumPy數(shù)組的兩種實(shí)現(xiàn)方案
在Web開發(fā)(如Flask應(yīng)用)中,處理用戶上傳的圖片文件時(shí),常會(huì)遇到FileStorage對(duì)象向numpy.ndarray的轉(zhuǎn)換需求,本文將提供兩種經(jīng)過(guò)驗(yàn)證的高效方法,并深入解析其技術(shù)細(xì)節(jié)與適用場(chǎng)景,需要的朋友可以參考下2025-03-03Python實(shí)現(xiàn)手機(jī)號(hào)自動(dòng)判斷男女性別(實(shí)例解析)
這篇文章主要介紹了Python實(shí)現(xiàn)手機(jī)號(hào)自動(dòng)判斷男女性別,本文性別判斷主要依靠airtest中的自動(dòng)化測(cè)試實(shí)現(xiàn),通過(guò)實(shí)例代碼給大家講解的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-12-12