亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

棧如何在python項目中實現

發布時間:2020-12-19 16:50:02 來源:億速云 閱讀:160 作者:Leah 欄目:開發技術

這篇文章將為大家詳細講解有關棧如何在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)
[]

使用collections.deque實現棧

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 module實現棧

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項目中實現就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

临漳县| 常熟市| 西城区| 句容市| 上杭县| 奈曼旗| 镇沅| 洛宁县| 镇赉县| 丰城市| 乾安县| 普格县| 平潭县| 武山县| 郓城县| 石渠县| 阿图什市| 平顶山市| 张掖市| 高碑店市| 宜丰县| 龙南县| 龙州县| 安宁市| 兴海县| 商南县| 丁青县| 澄城县| 泸水县| 溆浦县| 诏安县| 三河市| 大英县| 来安县| 特克斯县| 大邑县| 胶南市| 扎鲁特旗| 江城| 通州市| 蓬溪县|