您好,登錄后才能下訂單哦!
這篇文章主要介紹Python如何實現棧Stack,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
什么是棧
想象一摞被堆起來的書,這就是棧。這堆書的特點是,最后被堆進去的書,永遠在最上面。從這堆書里面取一本書出來,取哪本書最方便?肯定是最上面那本。棧這種數據結構的特點就是如此:后進先出(Last In First Out - LIFO),即最后被堆進去的數據,最先被拿出來。
棧的Python實現
棧可以用順序表方式實現,也可以用鏈表方式實現。我大Python的內建數據結構太強大,可以用list直接實現棧,簡單快捷。人生苦短,我用Python。代碼如下:
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): self.items.append(item) # 把棧頂元素丟出去(程序員喜歡把這個過程叫做出棧……) def pop(self, item): return self.items.pop() if __name__ == __main__: # 初始化一個棧對象 my_stack = Stack() # 把'h'丟進棧里 my_stack.push('h') # 把'a'丟進棧里 my_stack.push('a') # 看一下棧的大小(有幾個元素) print my_stack.size() # 打印棧頂元素 print my_stack.peek() # 把棧頂元素丟出去,并打印出來 print my_stack.pop() # 再看一下棧頂元素是誰 print my_stack.peek() # 這個時候棧的大小是多少? print my_stack.size() # 再丟一個棧頂元素 print my_stack.pop() # 看一下棧的大小 print my_stack.size # 棧是不是空了? print my_stack.is_empty() # 哇~真好吃~ print 'Yummy~'
Tips:
看完上面的代碼,聰明的同學一定知道了,Python里面實現棧,就是把list包裝成一個類,再添加一些方法作為棧的基本操作。其他的數據結構在Python中也是以類似的方式實現的。
那么,這里有一些有的沒的要說一下~
如果希望items[]是Stack類私有的屬性,這樣做就好了:
def __init__(self): self.__items = []
沒錯,就是在items前面加兩個下劃線__,在Python中,類的私有成員就是這樣定義噠~
如果希望限定Stack類的成員只有items,不要其他的怪蜀黍亂加成員,那么這樣做就好了:
class Stack(object): __slots__ = ('__items') def __init__(self): self.__items = []
這樣就安全多啦~
以上是“Python如何實現棧Stack”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。