Python的雙向隊列是什么-創(chuàng)新互聯(lián)

小編給大家分享一下Python的雙向隊列是什么,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

成都創(chuàng)新互聯(lián)長期為上千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為常山企業(yè)提供專業(yè)的成都做網(wǎng)站、成都網(wǎng)站設(shè)計,常山網(wǎng)站改版等技術(shù)服務(wù)。擁有10多年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。

雖然可以使用 Python 列表的 .append 和 .pop 方法模擬棧或者隊列,但刪除列表的第一個元素或者在第一個元素之前添加一個新元素,都非常耗時。因為需要把列表中的所有元素向后移動。

Python 的雙向隊列使用 collections.deque 類來實現(xiàn)。它是一個線程安全且可以快速從兩端添加或者刪除元素的類。

deque  /d?k/

也可以利用 collections.deque 類來實現(xiàn)緩存。首先先指定緩存隊列的大小,然后從隊首刪除過期元素和在隊尾添加新元素。

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)復(fù)制代碼

運行結(jié)果:

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

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

以上是Python的雙向隊列是什么的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道!

網(wǎng)站名稱:Python的雙向隊列是什么-創(chuàng)新互聯(lián)
文章轉(zhuǎn)載:http://www.bm7419.com/article6/dcdsig.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、移動網(wǎng)站建設(shè)、搜索引擎優(yōu)化、關(guān)鍵詞優(yōu)化、網(wǎng)頁設(shè)計公司Google

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作