Python3使用collections的deque雙隊列進行堆棧或隊列操作

版權聲明:轉載請註明作者(獨孤尚良dugushangliang)出處:https://blog.csdn.net/dugushangliang/article/details/102856073

 

Python內置的list可以直接用來堆棧操作,即先進後出,就通過append()和pop()實現即可。

如果是隊列操作,即先進先出,則通過append()和pop(0)也能實現,不過這個效率要慢很多。因爲移除第一個後則後面的需要一個個往前移動。

deque這個雙隊列操作,是優化之後的選擇,用這個會提高運行效率。

#導入相應的模塊
from collections import deque

查看deque和list的函數情況比對:

由此可看出,主要是增加了append、extend、pop這三個操作的左端操作方法。

其中popleft()等同於pop(0),但性能上前者優於後者。appendleft()則是在左側添加元素。這裏需要注意的是extendleft()操作。

由此可得,extend的操作類似於一個循環操作,即用於併入a的b隊列,其前面的元素先進入,末位元素則後進入。即:a.extend(b)是把b追加到a後,b的末位元素成爲a的末位元素。a.extendleft(b)則是把b逐個追加到a,此時b的末位元素成爲a的首位元素。這兩種的共性是:b的末位元素始終在a的兩端,如果是left模式則是首位,否則就是末位。

遺憾的是:deque的pop操作,是無參數的,即只能去掉兩端的,不能指定去掉某個位置的元素,而list的pop可以。

 

獨孤尚良dugushangliang——著

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章