您好,登錄后才能下訂單哦!
小編給大家分享一下Python的雙向隊列是什么,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
雖然可以使用 Python 列表的 .append 和 .pop 方法模擬棧或者隊列,但刪除列表的第一個元素或者在第一個元素之前添加一個新元素,都非常耗時。因為需要把列表中的所有元素向后移動。
Python 的雙向隊列使用 collections.deque 類來實現。它是一個線程安全且可以快速從兩端添加或者刪除元素的類。
deque /d?k/
也可以利用 collections.deque 類來實現緩存。首先先指定緩存隊列的大小,然后從隊首刪除過期元素和在隊尾添加新元素。
Luciano Ramalho 舉了一個示例來說明雙向隊列的基本用法。
from collections import deque dq = deque(range(10), maxlen=10) logging.info('dq -> %s', dq) dq.rotate(3) logging.info('dq -> %s', dq) dq.rotate(-4) logging.info('dq -> %s', dq) dq.extend([11, 22, 33]) logging.info('dq -> %s', dq) dq.extendleft([10, 20, 30, 40]) logging.info('dq -> %s', dq)復制代碼
運行結果:
INFO - dq -> deque([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], maxlen=10) INFO - dq -> deque([7, 8, 9, 0, 1, 2, 3, 4, 5, 6], maxlen=10) INFO - dq -> deque([1, 2, 3, 4, 5, 6, 7, 8, 9, 0], maxlen=10) INFO - dq -> deque([4, 5, 6, 7, 8, 9, 0, 11, 22, 33], maxlen=10) INFO - dq -> deque([40, 30, 20, 10, 4, 5, 6, 7, 8, 9], maxlen=10)復制代碼
雙向隊列也不是完美的,如果從隊列中間位置刪除元素就比較慢,因為它只針對隊列的頭尾操作做了優化。
以上是Python的雙向隊列是什么的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。