最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python中實現(xiàn)棧的三種方法

 更新時間:2020年12月19日 09:53:37   作者:老張哈哈哈  
這篇文章主要介紹了python中實現(xiàn)棧的三種方法,幫助大家更好的理解和使用python,感興趣的朋友可以了解下

棧是一種線性數(shù)據(jù)結(jié)構(gòu),用先進后出或者是后進先出的方式存儲數(shù)據(jù),棧中數(shù)據(jù)的插入刪除操作都是在棧頂端進行,常見棧的函數(shù)操作包括

  • 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中??梢杂靡韵氯N方法實現(xiàn):

1)list

2)collections.deque

3)queue.LifoQueue

使用列表實現(xiàn)棧

python的內(nèi)置數(shù)據(jù)結(jié)構(gòu)list可以用來實現(xiàn)棧,用append()向棧頂添加元素, pop() 可以以后進先出的順序刪除元素

但是列表本身有一些缺點,主要問題就是當列表不斷擴大的時候會遇到速度瓶頸.列表是動態(tài)數(shù)組,因此往其中添加新元素而沒有空間保存新的元素時,它會自動重新分配內(nèi)存塊,并將原來的內(nèi)存中的值復制到新的內(nèi)存塊中.這就導致了一些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實現(xiàn)棧

python中棧也可以用deque類實現(xiàn),當我們想要在實現(xiàn)在容器兩端更快速地進行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實現(xiàn)棧

Queue模塊有LIFO queue,也就是棧結(jié)構(gòu).用put()和get()操作從Queue中添加和獲得數(shù)據(jù)

>>> 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中實現(xiàn)棧的三種方法的詳細內(nèi)容,更多關于python 實現(xiàn)棧的資料請關注腳本之家其它相關文章!

相關文章

  • 利用Python模擬谷歌的小恐龍游戲

    利用Python模擬谷歌的小恐龍游戲

    谷歌流量器中有個很有名的彩蛋:當你網(wǎng)絡出現(xiàn)問題時,就會出現(xiàn)一個“小恐龍游戲”。本文就主要為大家介紹了如何用Python模擬實現(xiàn)這一小游戲,感興趣的同學可以學習一下
    2021-12-12
  • python + winrm 實現(xiàn)遠程連接Windows服務器并執(zhí)行指定命令的操作過程

    python + winrm 實現(xiàn)遠程連接Windows服務器并執(zhí)行指定命令的操作過程

    Windows遠程管理(WinRM)是Windows Server 2003 R2,Windows Vista和Windows Server 2008中一種新式的方便遠程管理的服務,這篇文章主要介紹了python + winrm 實現(xiàn)遠程連接Windows服務器并執(zhí)行指定命令的操作過程,需要的朋友可以參考下
    2023-10-10
  • Python opencv操作深入詳解

    Python opencv操作深入詳解

    這篇文章主要介紹了Python opencv操作深入詳解,文中整理的比較詳細,有感興趣的同學可以學習下
    2021-03-03
  • Python 3.6 -win64環(huán)境安裝PIL模塊的教程

    Python 3.6 -win64環(huán)境安裝PIL模塊的教程

    PIL功能非常強大,但API卻非常簡單易用。這篇文章主要介紹了Python 3.6 -win64環(huán)境安裝PIL模塊的教程,需要的朋友可以參考下
    2019-06-06
  • Python中的文件定位方式

    Python中的文件定位方式

    這篇文章主要介紹了Python中的文件定位方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • 使用Python的turtle模塊畫圖的方法

    使用Python的turtle模塊畫圖的方法

    這篇文章主要介紹了使用Python的turtle模塊畫圖的方法,涉及turtle簡介,運動命令,畫筆控制命令的分享,以及具體操作的步驟,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • Python 讀取.shp文件并生成圖幅編號的實現(xiàn)思路

    Python 讀取.shp文件并生成圖幅編號的實現(xiàn)思路

    這篇文章主要介紹了Python 讀取.shp文件并生成圖幅編號,代碼適用于需要處理和分析地理空間數(shù)據(jù)的場景,如城市規(guī)劃、環(huán)境監(jiān)測或自然資源管理,其中它可以幫助用戶讀取特定區(qū)域的Shapefile文件,確定其地理邊界,需要的朋友可以參考下
    2024-05-05
  • Python文件名的匹配之clob庫

    Python文件名的匹配之clob庫

    這篇文章主要介紹了Python文件名的匹配之clob庫,文中有非常詳細的代碼示例,對正在學習python的小伙伴們有很好地幫助喲,需要的朋友可以參考下
    2021-05-05
  • python中的格式化輸出方法

    python中的格式化輸出方法

    這篇文章主要介紹了python中的格式化輸出方法,?數(shù)據(jù)可以以人類可讀的形式打印,或?qū)懭胛募怨硎褂茫踔量梢砸阅撤N其他指定的形式。?用戶通常希望對輸出格式進行更多控制,而不是簡單地打印以空格分隔的值,更多格式化輸出方式需要的朋友可以參考下面文章內(nèi)容
    2022-03-03
  • Python3 能振興 Python的原因分析

    Python3 能振興 Python的原因分析

    我從Stephen A. Goss那讀到關于了《Python 3正在毀滅Python》。這篇文章有不少精彩的論點,但我卻并不認為Python 3是在毀滅Python,也不認為整個局面對Python一點也不利
    2014-11-11

最新評論

鹤岗市| 乾安县| 保定市| 安义县| 岚皋县| 建昌县| 漠河县| 鸡西市| 凤城市| 静安区| 察哈| 吉林省| 土默特右旗| 敦煌市| 昭苏县| 正定县| 西和县| 鹤庆县| 东阳市| 呼图壁县| 旺苍县| 鹤壁市| 舒兰市| 吉木萨尔县| 石渠县| 启东市| 始兴县| 迁西县| 临清市| 西吉县| 阿鲁科尔沁旗| 炉霍县| 洛宁县| 囊谦县| 武乡县| 湖州市| 永城市| 马关县| 太仆寺旗| 阜宁县| 东兰县|