python中的佇列和棧 python的佇列和棧

2021-10-12 11:16:34 字數 2011 閱讀 8440

(一)佇列和棧的區別

1、佇列:

佇列是一種特殊的線性表。其兩頭都有限制,插入只能在表的一端進行(只進不出),而刪除只能在表的另一端進行(只出不進),允許刪除的一端稱為隊尾(rear),允許插入的一端稱為隊頭 (front)。

先進先出(first in first out),fifo

2、棧:

後進先出(last in first out),lifo

3、其他:

佇列是執行緒間最常用的交換資料的形式。

在python中,多個執行緒之間的資料是共享的,多個執行緒進行資料交換的時候,不能夠保證資料的安全性和一致性,所以當多個執行緒需要進行資料交換的時候,佇列就出現了,佇列可以完美解決執行緒間的資料交換,保證執行緒間資料的安全性和一致性。

(二)佇列和棧的方法小結

queue.queue(maxsize=0)       建立佇列,fifo, 如果maxsize小於1就表示佇列長度無限。

queue.lifoqueue(maxsize=0)    建立棧,lifo, 如果maxsize小於1就表示佇列長度無限。

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

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

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

queue.get([block[, timeout]])          出隊,讀佇列,timeout等待時間。非阻塞get_nowait(),相當於get(block=false)

queue.put(item, [block[, timeout]]) 入隊,寫佇列,timeout等待時間。非阻塞put_nowait(),相當於put("***",block=false)

queue.queue.clear()    清空佇列

參考:(三)佇列

# from multiprocessing import queue

from queue import queue

# 建立乙個長度為5的佇列

q = queue(5)

# 判隊空

print(q.empty())

# 入隊:向佇列中新增元素

q.put(1)

q.put("abc")

q.put([1, 2, 3])

q.put()

q.put((1, 2))

# 判隊滿

print(q.full())

# 量隊

print(q.qsize())

# 出隊:從佇列中取出元素

print(q.get())

print(q.get())

print(q.get())

print(q.get())

print(q.get())

# 判斷隊空

print(q.empty())

# 量隊

print(q.qsize())

# 非阻塞入隊

q.put_nowait(6)

# 非阻塞出隊

print(q.get_nowait())

(四)棧

from queue import lifoqueue

# 定義乙個5長度的棧

s = lifoqueue(5)

# 進棧:向棧中新增元素

s.put(1)

s.put(2)

s.put(3)

s.put(4)

s.put(5)

# 判棧滿

print(s.full())

# 量棧

print(s.qsize())

# 退棧:從棧中取出元素

print(s.get())

print(s.get())

print(s.get())

print(s.get())

print(s.get())

# 判棧空

print(s.empty())

# 量棧

print(s.qsize())

python棧和佇列

類的定義 設計類 類名 屬性 行為 定義乙個女朋友 屬性 身高170,年齡20,性別 女 膚色 白 行為 中的定義 格式 class 類名 父類列表 屬性1屬性2 行為1 方法 行為2乙個類是以class關鍵字開始的 類名需要遵循識別符號命名規則,見名知意 首字母大寫 屬性需要遵循識別符號命名規則,...

python 棧和佇列

棧結構 類似於桶 先進後出 fifo first in last out 棧結構的常用方法 pop 出棧 push 入棧 size 棧大小 isempty 判斷棧是否為空 top 獲取棧頂元素 class stack object def init self self.stack def push ...

python 棧和佇列

使用list實現棧,使用deque實現佇列 使用list實現佇列效率低 1.使用list實現棧 先進後出 class stack 使用列表實現棧 def init self,lis self.lis lis def pop self,args 1 return self.lis.pop args 返...