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

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

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

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

  • empty() – 返回棧是否為空 – Time Complexity : O(1)
  • size() – 返回棧的長(zhǎng)度 – Time Complexity : O(1)
  • top() – 查看棧頂元素 – Time Complexity : O(1)
  • push(g) – 向棧頂添加元素 – Time Complexity : O(1)
  • pop() – 刪除棧頂元素 – Time Complexity : O(1)

python中??梢杂靡韵氯N方法實(shí)現(xiàn):

1)list

2)collections.deque

3)queue.LifoQueue

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

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

但是列表本身有一些缺點(diǎn),主要問(wèn)題就是當(dāng)列表不斷擴(kuò)大的時(shí)候會(huì)遇到速度瓶頸.列表是動(dòng)態(tài)數(shù)組,因此往其中添加新元素而沒(méi)有空間保存新的元素時(shí),它會(huì)自動(dòng)重新分配內(nèi)存塊,并將原來(lái)的內(nèi)存中的值復(fù)制到新的內(nèi)存塊中.這就導(dǎo)致了一些append()操作會(huì)消耗更多的時(shí)間

>>> 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實(shí)現(xiàn)棧

python中棧也可以用deque類(lèi)實(shí)現(xiàn),當(dāng)我們想要在實(shí)現(xiàn)在容器兩端更快速地進(jìn)行append和pop操作時(shí),deque比列表更合適.deque可以提供O(1)時(shí)間的append和pop操作,而列表則需要O(n)時(shí)間.

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

相關(guān)文章

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

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

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

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

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

    Python opencv操作深入詳解

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

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

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

    Python中的文件定位方式

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

    使用Python的turtle模塊畫(huà)圖的方法

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

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

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

    Python文件名的匹配之clob庫(kù)

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

    python中的格式化輸出方法

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

    Python3 能振興 Python的原因分析

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

最新評(píng)論

澄城县| 永兴县| 金寨县| 齐齐哈尔市| 田林县| 永兴县| 旅游| 洛浦县| 封开县| 应用必备| 永德县| 建德市| 平凉市| 长汀县| 宣汉县| 大新县| 万州区| 门头沟区| 泸水县| 通河县| 大冶市| 彭泽县| 慈利县| 长寿区| 金湖县| 滦南县| 太白县| 都江堰市| 恩施市| 镇安县| 望城县| 外汇| 察雅县| 武夷山市| 墨竹工卡县| 兴安盟| 平阴县| 泰州市| 蒙阴县| 崇左市| 色达县|