首頁  >  文章  >  後端開發  >  聊聊 Python 的雙向佇列

聊聊 Python 的雙向佇列

coldplay.xixi
coldplay.xixi轉載
2020-10-27 17:09:092340瀏覽

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刪除