日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python 栈的用法--学习

發(fā)布時(shí)間:2024/3/24 python 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 栈的用法--学习 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

棧(stack),可以理解成一盒口香糖,想要拿出一顆,自然從頂部取走最后放入的,這里的頂部就是"棧頂";添加和移除新項(xiàng)都發(fā)生在棧頂,與棧頂對(duì)應(yīng)的端稱為“棧底”。棧這種數(shù)據(jù)結(jié)構(gòu)的特點(diǎn)是后進(jìn)先出(Last In First Out - LIFO),即最后被堆進(jìn)去的數(shù)據(jù),最先被拿出來。
從棧放入新項(xiàng)和從棧刪除項(xiàng)的操作分別叫(push)和(pop)。

棧的操作

棧操作如下

Stack() 創(chuàng)建一個(gè)空的新棧。

push(item)將一個(gè)新項(xiàng)添加到棧的頂部。

pop() 從棧中刪除頂部項(xiàng)。

peek() 從棧返回頂部項(xiàng),但不會(huì)刪除它

is_Empty() 測(cè)試棧是否為空。

size() 返回棧中的 item 數(shù)量。

棧的實(shí)現(xiàn)

這里把列表(list)相當(dāng)于一個(gè)棧,可以使用 append 和 pop的列表方法來實(shí)現(xiàn)操作。以下棧實(shí)現(xiàn)假定列表的結(jié)尾將保存棧的頂部元素。隨著棧元素增長(push ),新項(xiàng)將被添加到列表的末尾。(pop) 操作列表末尾的元素。

class Stack(object):def __init__(self): # 初始化棧為空列表self.items = []def is_empty(self): # 判斷棧是否為空,返回布爾值return self.items == []def peek(self): # 返回棧頂元素return self.items[len(self.items) - 1]def size(self): # 返回棧的大小return len(self.items)def push(self, item): # 把新的元素堆進(jìn)棧里面(入棧)self.items.append(item)def pop(self, item): # 把棧頂元素丟出去(出棧)return self.items.pop() if __name__ == '__main__':my_stack = Stack() # 初始化一個(gè)棧對(duì)象my_stack.push('a') # 把'a'丟進(jìn)棧里my_stack.push('b') # 把'b'丟進(jìn)棧里my_stack.push('c') # 把'c'丟進(jìn)棧里print (my_stack.size()) # 棧中有幾個(gè)元素print (my_stack.peek()) # 打印棧頂元素print (my_stack.pop('a')) # 把棧頂元素a丟出去,并打印出來print (my_stack.peek()) # 再看一下棧頂元素是誰print (my_stack.size()) # 這個(gè)時(shí)候棧的大小是多少?print (my_stack.pop('b')) # 再丟一個(gè)棧頂元素bprint (my_stack.size) # 看一下棧的大小print (my_stack.is_empty()) # 判斷棧是不是空了?

<擴(kuò)展知識(shí)>

堆和棧的區(qū)別

1、棧區(qū)(stack)— 由編譯器自動(dòng)分配釋放 ,存放函數(shù)的參數(shù)值,局部變量的值等。其操作方式類似于數(shù)據(jù)結(jié)構(gòu)中的棧。
2、堆區(qū)(heap) — 一般由程序員分配釋放, 若程序員不釋放,程序結(jié)束時(shí)可能由OS回收 。注意它與數(shù)據(jù)結(jié)構(gòu)中的堆是兩回事.

堆和棧的理論知識(shí)

由申請(qǐng)方式劃分:
stack: 由系統(tǒng)自動(dòng)分配。 例如,聲明在函數(shù)中一個(gè)局部變量 int b; 系統(tǒng)自動(dòng)在棧中為b開辟空間

heap: 需要程序員自己申請(qǐng),并指明大小.

堆和棧的區(qū)別可以用如下的比喻來看出:
使用棧就如同我們?nèi)ワ堭^里吃飯,只管點(diǎn)菜(發(fā)出申請(qǐng))、付錢、和吃(使用),吃飽了就走,不必理會(huì)切菜、洗菜等準(zhǔn)備工作和洗碗、刷鍋等掃尾工作,他的好處是快捷,但是自由度小。
使用堆就象是自己動(dòng)手做喜歡吃的菜肴,比較麻煩,但是比較符合自己的口味,而且自由度大。

有任何問題,可以關(guān)注我的公眾號(hào): IT果力成,一起學(xué)習(xí)交流~加油

總結(jié)

以上是生活随笔為你收集整理的python 栈的用法--学习的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。