這篇文章將為大家詳細講解有關棧如何在python項目中實現,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
棧是一種線性數據結構,用先進后出或者是后進先出的方式存儲數據,棧中數據的插入刪除操作都是在棧頂端進行,常見棧的函數操作包括
empty() – 返回棧是否為空 – Time Complexity : O(1)
size() – 返回棧的長度 – Time Complexity : O(1)
top() – 查看棧頂元素 – Time Complexity : O(1)
push(g) – 向棧頂添加元素 – Time Complexity : O(1)
pop() – 刪除棧頂元素 – Time Complexity : O(1)
python中棧可以用以下三種方法實現:
1)list
2)collections.deque
3)queue.LifoQueue
python的內置數據結構list可以用來實現棧,用append()向棧頂添加元素, pop() 可以以后進先出的順序刪除元素
但是列表本身有一些缺點,主要問題就是當列表不斷擴大的時候會遇到速度瓶頸.列表是動態數組,因此往其中添加新元素而沒有空間保存新的元素時,它會自動重新分配內存塊,并將原來的內存中的值復制到新的內存塊中.這就導致了一些append()操作會消耗更多的時間
>>> stack = [] >>> #append() fuction to push ... #element in list ... >>> stack.append('hello') >>> stack.append('world') >>> stack.append('!') >>> print('Initial stack') Initial stack >>> print(stack) ['hello', 'world', '!'] >>> #pop() function to pop element ... #from stack in LIFO order ... >>> print('\nElement poped from stack') Element poped from stack >>> print(stack.pop()) ! >>> print(stack.pop()) world >>> print(stack.pop()) hello >>> print('\nStack after all elements are poped') Stack after all elements are poped >>> print(stack) []
python中棧也可以用deque類實現,當我們想要在實現在容器兩端更快速地進行append和pop操作時,deque比列表更合適.deque可以提供O(1)時間的append和pop操作,而列表則需要O(n)時間.
>>> from collections import deque >>> stack = deque() >>> # append() fuction to push ... #element in list ... >>> stack.append('hello') >>> stack.append('world') >>> stack.append('!') >>> print('Initial stack') Initial stack >>> print(stack) deque(['hello', 'world', '!']) >>> #pop() function to pop element ... #from stack in LIFO order ... >>> print('\nElement poped from stack') Element poped from stack >>> print(stack.pop()) ! >>> print(stack.pop()) world >>> print(stack.pop()) hello >>> print('\nStack after all elements are poped') Stack after all elements are poped >>> print(stack)deque([])
Queue模塊有LIFO queue,也就是棧結構.用put()和get()操作從Queue中添加和獲得數據
>>> from queue import LifoQueue >>> stack = LifoQueue(maxsize = 3) >>> print(stack.qsize()) 0 >>> stack.put('hello') >>> stack.put('world') >>> stack.put('!') >>> print('\nElement poped from stack') Element poped from stack >>> print(stack.get()) ! >>> print(stack.get()) world >>> print(stack.get()) hello >>> print('\nEmpty:', stack.empty()) Empty: True
關于棧如何在python項目中實現就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
本文標題:棧如何在python項目中實現-創新互聯
文章鏈接:http://vcdvsql.cn/article26/cdiecg.html
成都網站建設公司_創新互聯,為您提供自適應網站、域名注冊、動態網站、品牌網站設計、網站策劃、用戶體驗
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯