python資料型別 佇列的講解

2021-10-13 13:11:19 字數 1964 閱讀 5171

佇列的簡單應用

佇列應用實戰

佇列是有序集合,新增操作發生在尾部,移除操作發生在頭部,和棧幾乎相反,最新新增的元素必須在佇列的尾部等待,就像排隊買東西一樣,計算機執行任務也是相同的原理

佇列支援以下操作

操作方法

queue()建立乙個空佇列

enqueue(item)在佇列的尾部新增乙個元素

dequeue()從佇列的頭部移除乙個元素.並返回值

isempty()檢查佇列是否為空

size()返回佇列中的元素數目

但是需要我們自己用python建立乙個佇列的類

class

queue()

:def

__init__

(self)

: self.items =

defisempty

(self)

:return self.items ==

defenqueue

(self, item)

: self.items.insert(

0, item)

defdequeue

(self)

:return self.items.pop(

)def

size

(self)

:return

len(self.items)

我們需要用queue包中的queue來呼叫佇列,函式在使用時略有不同。

queue.qsize() 返回佇列的大小

queue.empty() 如果隊列為空,返回true,反之false

queue.full() 如果佇列滿了,返回true,反之false

queue.full 與 maxsize 大小對應

queue.get([block[, timeout]]) 獲取佇列,timeout等待時間

queue.get_nowait() 相當queue.get(false)

非阻塞 queue.put(item) 寫入佇列,timeout等待時間

queue.put_nowait(item) 相當queue.put(item, false)

queue.task_done() 在完成一項工作之後,queue.task_done() 函式向任務已經完成的佇列傳送乙個訊號

queue.join() 實際上意味著等到隊列為空,再執行別的操作

這裡我們簡單的用乙個傳土豆遊戲來進行實踐。

遊戲規則是孩子們圍成乙個圈,並一次盡可能快的傳乙個土豆,大家停止傳遞時,手裡有土豆的孩子被淘汰。重複過程,直到只剩乙個孩子。

我們可以用佇列來進行簡單的模擬乙個環。假設手裡有土豆的孩子位於佇列的頭部,在模擬傳土豆時,程式將這個孩子的名字移除佇列並加入到佇列尾部。以此迴圈。到了停下的時候,佇列頭部的孩子被淘汰。

#傳土豆

defhotpotato

(namelist, num)

: simqueue = queue(

)for name in namelist:

simqueue.enqueue(name)

while simqueue.size(

)>1:

for i in

range

(num)

: simqueue.enqueue(simqueue.dequeue())

simqueue.dequeue(

)return simqueue.dequeue(

)hotpotato(

['tom'

,'leo'

,'sam'

,'susan'

,'jane'

,'kent'],

input

('請輸入乙個數字:'

))

此時的輸入是我們定的傳的次數。

力扣.最近的請求次數

Python之資料型別講解

number 數字 包括int,long,float,double,complex string 字串 例如 hello,hello hello list 列表 例如 1,2,3 1,2,3,1,2,3 4 dictionary 字典 例如 tuple 元組 例如 1,2,3,abc file 檔案...

python的資料型別

python變數沒有型別,但是python有資料型別 520 和520 是不一樣的,乙個是字串,乙個是數字 python資料型別包括很多,例如數值型別包括 e記法,表示科學計數法,屬於浮點型數值 6 100 000 000 6.1 1 000 000 000 6.1e9 布林型 ture和false...

python的資料型別

str pythonzifuchuan 字串是有索引值的,從左到右索引預設0開始的,最大範圍是字串長度少1,從右到左索引預設 1開始的,最大範圍是字串開頭 print str 輸出完整字串 print str 0 輸出字串中的第乙個字元 print str 2 5 輸出字串中第三個至第五個之間的字串...