python有棧嗎?
python是有棧的。棧(stacks)是一種只能通過(guò)訪問(wèn)其一端來(lái)實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)與檢索的線性數(shù)據(jù)結(jié)構(gòu),具有后進(jìn)先出(last in first out,LIFO)的特征。
對(duì)棧的兩種主要操作是將一個(gè)元素壓入棧和將一個(gè)元素彈出棧。
入棧使用push()
方法,出棧使用pop()
方法
另一個(gè)常用的操作是預(yù)覽棧頂?shù)脑亍op()方法雖然可以訪問(wèn)棧頂?shù)脑兀钦{(diào)用該方法后,棧頂元素也從棧中被永久性地刪除了。peek()方法則只返回棧頂元素,而不刪除它
為了記錄棧頂元素的位置,同時(shí)也為了標(biāo)記哪里可以加入新元素,我們使用變量top,當(dāng)向棧內(nèi)壓入元素時(shí),該變量增大;從棧內(nèi)彈出元素時(shí),該變量減小
push()、pop()和peek()是棧的3個(gè)主要方法,但是棧還有其他方法和屬性
stack通常的操作:
Stack() 建立一個(gè)空的棧對(duì)象 push() 把一個(gè)元素添加到棧的最頂層 pop() 刪除棧最頂層的元素,并返回這個(gè)元素 peek() 返回最頂層的元素,并不刪除它 isEmpty() 判斷棧是否為空 size() 返回棧中元素的個(gè)數(shù)
#-*- coding:?UTF-8 -*- __author__ = 'Administrator' #python的list對(duì)象模擬棧的實(shí)現(xiàn) class Stack: #模擬棧 def __init__(self): self.items = [] def isEmpty(self): return len(self.items)==0 def push(self,item): self.items.append(item) def pop(self): return self.items.pop() def peek(self): if not self.isEmpty(): return self.items[len(self.items)-1] def size(self): return len(self.items) #創(chuàng)建一個(gè)棧對(duì)象,并加入操作方法 s = Stack() print(s.isEmpty()) s.push(4) s.push('DOG') print(s.peek()) s.push(True) print(s.size()) print(s.isEmpty()) s.push(8.4) print(s.pop()) print(s.pop()) print(s.size())
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com