聊聊 Python 的雙向佇列

coldplay.xixi
發布: 2020-10-27 17:09:09
轉載
2283 人瀏覽過

Python教程##今天介紹隊伍。

聊聊 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)复制代码
登入後複製
    maxlen 是deque 的任選參數,用於指定隊列,即可以放多少個元素。
  1. rotate( ) 方法可以旋轉隊列。它有一個入參n ,當n >0 時,隊列從最右邊開始的n 個元素會被移動到左邊。當n extend()方法可以為佇列新增元素,它接受一個清單作為入參,取出清單中的所有元素加入到佇列中。新的元素放置在佇列右邊。
  2. 如果在新增元素時發現佇列已滿,接下來就會自動刪除隊首的元素。
  3. extendleft(iter)方法是將新增的元素放置在佇列左邊。其他特性與extend()方法相同。
佇列佇列也不是完美的,如果從佇列中間位置刪除元素就比較慢,因為它只是針對佇列的頭尾操作做了最佳化。

相關免費學習推薦:python教學#(影片)##

以上是聊聊 Python 的雙向佇列的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:juejin.im
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!