導航:首頁 > 編程語言 > python實現隊列

python實現隊列

發布時間:2022-07-18 18:55:31

python實現堆棧與隊列的方法

python實現堆棧與隊列的方法
本文實例講述了python實現堆棧與隊列的方法。分享給大家供大家參考。具體分析如下:
1、python實現堆棧,可先將Stack類寫入文件stack.py,在其它程序文件中使用from stack import Stack,然後就可以使用堆棧了。
stack.py的程序:
代碼如下:class Stack():
def __init__(self,size):
self.size=size;
self.stack=[];
self.top=-1;
def push(self,ele): #入棧之前檢查棧是否已滿
if self.isfull():
raise exception("out of range");
else:
self.stack.append(ele);
self.top=self.top+1;
def pop(self): # 出棧之前檢查棧是否為空
if self.isempty():
raise exception("stack is empty");
else:
self.top=self.top-1;
return self.stack.pop();

def isfull(self):
return self.top+1==self.size;
def isempty(self):
return self.top==-1;
再寫一個程序文件,stacktest.py,使用棧,內容如下:
代碼如下:#!/usr/bin/python
from stack import Stack
s=Stack(20);
for i in range(3):
s.push(i);
s.pop()
print s.isempty();

2、python 實現隊列:
復制代碼代碼如下:class Queue():
def __init__(self,size):
self.size=size;
self.front=-1;
self.rear=-1;
self.queue=[];
def enqueue(self,ele): #入隊操作
if self.isfull():
raise exception("queue is full");
else:
self.queue.append(ele);
self.rear=self.rear+1;
def dequeue(self): #出隊操作
if self.isempty():
raise exception("queue is empty");
else:
self.front=self.front+1;
return self.queue[self.front];
def isfull(self):
return self.rear-self.front+1==self.size;
def isempty(self):
return self.front==self.rear;

q=Queue(10);
for i in range(3):
q.enqueue(i);
print q.dequeue();
print q.isempty();
希望本文所述對大家的Python程序設計有所幫助。

Ⅱ 需要用來python實現,將一堆數據平分用什麼方法,列表還是隊列哪個好具體代碼怎麼寫,非常感

>>>buffer
[0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9]
>>>a=buffer[0::2]
>>>b=buffer[1::2]
>>>a,b
([0,2,4,6,8,0,2,4,6,8],[1,3,5,7,9,1,3,5,7,9])
>>>

列表是常用的數據結構, 隊列常用於多任務處理的通信

Ⅲ python生成多個隊列

q=[]
foriinrange(9):
q.append(Queue())

Ⅳ python中如何用鏈表實現隊列

python中的隊列是列表嗎?
如果有問題, 希望能一起研究一下?
看下網名吧, 樓主

Ⅳ 如何用python簡單的設計開發非同步任務調度隊列

首先,客戶端可以直接扔任務到一個web services的介面上 –》 web api接收到任務後,會根據客戶端的ip和時間戳做task_id,返回給客戶,緊接著在redis裡面標記這任務的狀態。 格式為 func,args,kwargs,timeout=xx,queue_level=xx,interval_time=xx
主服務端:
一個線程,會不停的掃描那個redis hash表,取出任務的interval_time後,進行取模,如果匹配成功,就會塞到 redis sorted set有續集和裡面。
主線程,會不停的看看sorted set裡面,有沒有比自己實現小的任務,有的話,執行並刪除。 這里的執行是用多進程,為毛用多進程,因為線程很多時候是不好控制強制幹掉的。 每個任務都會用multiprocessing的方式去執行,去調用的時候,會多傳進一個task_id,用來把相關的進度推送到redis裡面。 另外,fork進程後,我會得到一個pid,我會把pid和timeout的信息,存放到kill_hash裡面。 然後會不間斷的查看,在指定的timeout內,這pid還在不在,如果還是存在,沒有退出的話,說明他的任務不太正常,我們就可以在main(),裡面幹掉這些任務。
所謂的優先順序就是個 High + middle +Low 的三合一鏈條而已,我每次都會堅持從高到低取任務,如果你的High級別的任務不斷的話,那麼我會一直幹不了低級別的任務了。 代碼的體現是在redis sorted set這邊,設立三個有序集合,我的worker隊列會從high開始做……
那麼如果想幹掉一個任務是如何操作的,首先我需要在 kill_hash 裡面標記任務應該趕緊幹掉,在就是在task_hash裡面把那個task_id幹掉,好讓他不會被持續的加入待執行的隊列裡面。

Ⅵ python實現文件存到隊列中

Python可以用list來實現一個隊列
.append(xxx)方法可以實現在隊列的末位插入
.pop(0)方法可以實現在隊列頭部彈出
不知道你要怎麼保存文件,如果簡單地讀入文件,文件會存放在內存里,腳本停止運行就全沒了

Ⅶ python 把列表當作隊列使用方法

5.1.2. 把列表當作隊列使用
你也可以把列表當作隊列使用,隊列作為特定的數據結構,最先進入的元素最先釋放(先進先出)。不過,列表這樣用效率不高。相對來說從列表末尾添加和彈出很快;在頭部插入和彈出很慢(因為,為了一個元素,要移動整個列表中的所有元素)。
要實現隊列,使用 collections.deque,它為在首尾兩端快速插入和刪除而設計。例如:
>>> from collections import deque
>>> queue = deque(["Eric", "John", "Michael"])
>>> queue.append("Terry") # Terry arrives
>>> queue.append("Graham") # Graham arrives
>>> queue.popleft() # The first to arrive now leaves
'Eric'
>>> queue.popleft() # The second to arrive now leaves
'John'
>>> queue # Remaining queue in order of arrival
deque(['Michael', 'Terry', 'Graham'])

Ⅷ python中的數據結構分析

1.Python數據結構篇

數據結構篇主要是閱讀[Problem Solving with Python](Welcome to Problem Solving with Algorithms and Data Structures) [該網址鏈接可能會比較慢]時寫下的閱讀記錄,當然,也結合了部分[演算法導論](Introction to Algorithms)
中的內容,此外還有不少wikipedia上的內容,所以內容比較多,可能有點雜亂。這部分主要是介紹了如何使用Python實現常用的一些數據結構,例
如堆棧、隊列、二叉樹等等,也有Python內置的數據結構性能的分析,同時還包括了搜索和排序(在演算法設計篇中會有更加詳細的介紹)的簡單總結。每篇文
章都有實現代碼,內容比較多,簡單演算法一般是大致介紹下思想及演算法流程,復雜的演算法會給出各種圖示和代碼實現詳細介紹。

**這一部分是下
面演算法設計篇的前篇,如果數據結構還不錯的可以直接看演算法設計篇,遇到問題可以回來看數據結構篇中的某個具體內容充電一下,我個人認為直接讀演算法設計篇比
較好,因為大家時間也都比較寶貴,如果你會來讀這些文章說明你肯定有一定基礎了,後面的演算法設計篇中更多的是思想,這里更多的是代碼而已,嘿嘿。**

(1)[搜索](Python Data Structures)

簡述順序查找和二分查找,詳述Hash查找(hash函數的設計以及如何避免沖突)

(2)[排序](Python Data Structures)

簡述各種排序演算法的思想以及它的圖示和實現

(3)[數據結構](Python Data Structures)

簡述Python內置數據結構的性能分析和實現常用的數據結構:棧、隊列和二叉堆

(4)[樹總結](Python Data Structures)

簡述二叉樹,詳述二叉搜索樹和AVL樹的思想和實現

2.Python演算法設計篇

演算法設計篇主要是閱讀[Python Algorithms: Mastering Basic Algorithms in the Python Language](Python Algorithms: Mastering Basic Algorithms in the Python Language)[**點擊鏈接可進入Springer免費下載原書電子版**]之後寫下的讀書總結,原書大部分內容結合了經典書籍[演算法導論](Introction to Algorithms),
內容更加細致深入,主要是介紹了各種常用的演算法設計思想,以及如何使用Python高效巧妙地實現這些演算法,這里有別於前面的數據結構篇,部分演算法例如排
序就不會詳細介紹它的實現細節,而是側重於它內在的演算法思想。這部分使用了一些與數據結構有關的第三方模塊,因為這篇的重點是演算法的思想以及實現,所以並
沒有去重新實現每個數據結構,但是在介紹演算法的同時會分析Python內置數據結構以及第三方數據結構模塊的優缺點,也就意味著該篇比前面都要難不少,但
是我想我的介紹應該還算簡單明了,因為我用的都是比較朴實的語言,並沒有像演算法導論一樣列出一堆性質和定理,主要是對著某個問題一步步思考然後演算法就出來
了,嘿嘿,除此之外,裡面還有很多關於python開發的內容,精彩真的不容錯過!

這里每篇文章都有實現代碼,但是代碼我一般都不會分
析,更多地是分析演算法思想,所以內容都比較多,即便如此也沒有包括原書對應章節的所有內容,因為內容實在太豐富了,所以我只是選擇經典的演算法實例來介紹算
法核心思想,除此之外,還有不少內容是原書沒有的,部分是來自演算法導論,部分是來自我自己的感悟,嘻嘻。該篇對於大神們來說是小菜,請一笑而過,對於菜鳥
們來說可能有點難啃,所以最適合的是和我水平差不多的,對各個演算法都有所了解但是理解還不算深刻的半桶水的程序猿,嘿嘿。

本篇的順序按照原書[Python Algorithms: Mastering Basic Algorithms in the Python Language](Python Algorithms: Mastering Basic Algorithms in the Python Language)的章節來安排的(章節標題部分相同部分不同喲),為了節省時間以及保持原著的原滋原味,部分內容(一般是比較難以翻譯和理解的內容)直接摘自原著英文內容。

**1.
你也許覺得很多內容你都知道嘛,沒有看的必要,其實如果是我的話我也會這么想,但是如果只是歸納一個演算法有哪些步驟,那這個總結也就沒有意義了,我覺得這
個總結的亮點在於想辦法說清楚一個演算法是怎麼想出來的,有哪些需要注意的,如何進行優化的等等,採用問答式的方式讓讀者和我一起來想出某個問題的解,每篇
文章之後都還有一兩道小題練手喲**

**2.你也許還會說演算法導論不是既權威又全面么,基本上每個演算法都還有詳細的證明呢,讀演算法導論豈
不更好些,當然,你如果想讀演算法導論的話我不攔著你,讀完了感覺自己整個人都不好了別怪小弟沒有提醒你喲,嘻嘻嘻,左一個性質右一個定理實在不適合演算法科
普的啦,沒有多少人能夠堅持讀完的。但是碼農與蛇的故事內容不多喲,呵呵呵**

**3.如果你細讀本系列的話我保證你會有不少收獲的,需要看演算法導論哪個部分的地方我會給出提示的,嘿嘿。溫馨提示,前面三節內容都是介紹基礎知識,所以精彩內容從第4節開始喲,么么噠 O(∩_∩)O~**

(1)[Python Algorithms - C1 Introction](Python Algorithms)

本節主要是對原書中的內容做些簡單介紹,說明演算法的重要性以及各章節的內容概要。

(2)[Python Algorithms - C2 The basics](Python Algorithms)

**本節主要介紹了三個內容:演算法漸近運行時間的表示方法、六條演算法性能評估的經驗以及Python中樹和圖的實現方式。**

(3)[Python Algorithms - C3 Counting 101](Python Algorithms)

原書主要介紹了一些基礎數學,例如排列組合以及遞歸循環等,但是本節只重點介紹計算演算法的運行時間的三種方法

(4)[Python Algorithms - C4 Inction and Recursion and Rection](Python Algorithms)

**本節主要介紹演算法設計的三個核心知識:Inction(推導)、Recursion(遞歸)和Rection(規約),這是原書的重點和難點部分**

(5)[Python Algorithms - C5 Traversal](Python Algorithms)

**本節主要介紹圖的遍歷演算法BFS和DFS,以及對拓撲排序的另一種解法和尋找圖的(強)連通分量的演算法**

(6)[Python Algorithms - C6 Divide and Combine and Conquer](Python Algorithms)

**本節主要介紹分治法策略,提到了樹形問題的平衡性以及基於分治策略的排序演算法**

(7)[Python Algorithms - C7 Greedy](Python Algorithms)

**本節主要通過幾個例子來介紹貪心策略,主要包括背包問題、哈夫曼編碼和最小生成樹等等**

(8)[Python Algorithms - C8 Dynamic Programming](Python Algorithms)

**本節主要結合一些經典的動規問題介紹動態規劃的備忘錄法和迭代法這兩種實現方式,並對這兩種方式進行對比**

(9)[Python Algorithms - C9 Graphs](Python Algorithms)

**本節主要介紹圖演算法中的各種最短路徑演算法,從不同的角度揭示它們的內核以及它們的異同**

Ⅸ python 中 什麼情況 隊列會 zuse

Python可以用list來實現一個隊列 .append(xxx)方法可以實現在隊列的末位插入 .pop(0)方法可以實現在隊列頭部彈出 不知道你要怎麼保存文件,如果簡單地讀入文件,文件會存放在內存里,腳本停止運行就全沒了

Ⅹ python如何實現堆棧與隊列的實例詳解

python實現堆棧,可先將Stack類寫入文件stack.py,在其它程序文件中使用from stack import Stack,然後就可以使用堆棧了。

閱讀全文

與python實現隊列相關的資料

熱點內容
麗水四軸加工中心編程 瀏覽:689
國產系統怎麼解壓 瀏覽:552
戰雙程序員 瀏覽:483
him觸摸編程軟體 瀏覽:931
植物大戰僵屍存檔怎麼轉移安卓 瀏覽:852
java棧的元素 瀏覽:737
程序員與籃球事件 瀏覽:675
app反編譯不完整 瀏覽:788
電腦上的文件夾怎麼調整 瀏覽:7
伺服器無響應是什麼原因呀 瀏覽:984
wd文檔里的app怎麼製作 瀏覽:513
電腦里的文件夾沒有了一般能恢復嗎 瀏覽:418
哪裡有配加密鑰匙的 瀏覽:210
伺服器開不了機怎麼把數據弄出來 瀏覽:958
gif動態圖片怎麼壓縮 瀏覽:521
黑猴子棒球壓縮文件解壓密碼 瀏覽:631
如何讓app適應不同的手機屏幕大小 瀏覽:10
蘋果手機如何給安卓手機分享軟體 瀏覽:761
蘋果電腦怎麼運行騰訊雲伺服器 瀏覽:59
明日之後沙石堡命令助手 瀏覽:261