中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python的雙向隊列是什么

發布時間:2020-10-28 10:05:30 來源:億速云 閱讀:243 作者:小新 欄目:編程語言

小編給大家分享一下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)復制代碼
  1. maxlen 是 deque 的可選參數,用于指定隊列容量,即可以放多少個元素。
  2. rotate() 方法可以旋轉隊列。它有一個入參 n ,當 n >0時,隊列從最右邊開始的 n 個元素會被移動到左邊。當 n <0時,隊列從最左邊開始的 n 個元素會被移動到右邊。
  3. extend() 方法可以為隊列添加新元素,它接受一個列表作為入參,會把列表中的所有元素添加到隊列中。新的元素放置在隊列右邊。
  4. 如果在添加新元素時發現隊列已滿,這時就會自動刪除隊首的元素。
  5. extendleft(iter) 方法是把新增的元素放置在隊列左邊。其它特性與 extend() 方法相同。

雙向隊列也不是完美的,如果從隊列中間位置刪除元素就比較慢,因為它只針對隊列的頭尾操作做了優化。

以上是Python的雙向隊列是什么的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

长白| 三都| 合肥市| 榆树市| 南丹县| 大竹县| 泾源县| 文山县| 万安县| 张掖市| 吕梁市| 美姑县| 都安| 扎兰屯市| 新津县| 北川| 阿瓦提县| 垦利县| 亳州市| 鄂州市| 涟源市| 台中市| 夹江县| 固始县| 洪雅县| 泗阳县| 东台市| 卓资县| 平泉县| 江安县| 宜兴市| 淮北市| 延边| 南漳县| 土默特右旗| 聂荣县| 邹城市| 贵州省| 怀仁县| 荆门市| 阳高县|