亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

忻城县| 海丰县| 砚山县| 东乡族自治县| 天门市| 宁安市| 夏邑县| 佳木斯市| 樟树市| 尚志市| 易门县| 罗山县| 潞城市| 桂东县| 丹寨县| 大同县| 九江市| 延川县| 灵石县| 调兵山市| 海丰县| 呈贡县| 高台县| 米脂县| 滦南县| 哈巴河县| 张北县| 丰镇市| 醴陵市| 新晃| 肥乡县| 同仁县| 融水| 湘潭县| 沾化县| 望奎县| 青龙| 巩义市| 赞皇县| 钟山县| 嘉定区|