91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

威远县| 宁强县| 达州市| 蒙阴县| 富锦市| 玉溪市| 宁远县| 洪雅县| 泾源县| 平武县| 南召县| 抚松县| 海伦市| 长治市| 临夏县| 湘阴县| 莫力| 遂川县| 巴林左旗| 贵阳市| 连江县| 英山县| 白银市| 奉化市| 镇平县| 云安县| 深水埗区| 金华市| 英山县| 安多县| 平罗县| 恩平市| 永新县| 永康市| 武邑县| 大石桥市| 万安县| 开化县| 涿鹿县| 综艺| 喀什市|