溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python如何實現(xiàn)棧Stack

發(fā)布時間:2021-03-23 11:05:12 來源:億速云 閱讀:118 作者:小新 欄目:開發(fā)技術

這篇文章主要介紹Python如何實現(xiàn)棧Stack,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

什么是棧

想象一摞被堆起來的書,這就是棧。這堆書的特點是,最后被堆進去的書,永遠在最上面。從這堆書里面取一本書出來,取哪本書最方便?肯定是最上面那本。棧這種數(shù)據(jù)結構的特點就是如此:后進先出(Last In First Out - LIFO),即最后被堆進去的數(shù)據(jù),最先被拿出來。

棧的Python實現(xiàn)

??梢杂庙樞虮矸绞綄崿F(xiàn),也可以用鏈表方式實現(xiàn)。我大Python的內(nèi)建數(shù)據(jù)結構太強大,可以用list直接實現(xiàn)棧,簡單快捷。人生苦短,我用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里面實現(xiàn)棧,就是把list包裝成一個類,再添加一些方法作為棧的基本操作。其他的數(shù)據(jù)結構在Python中也是以類似的方式實現(xiàn)的。
那么,這里有一些有的沒的要說一下~

如果希望items[]是Stack類私有的屬性,這樣做就好了:

def __init__(self):
  self.__items = []

沒錯,就是在items前面加兩個下劃線__,在Python中,類的私有成員就是這樣定義噠~

如果希望限定Stack類的成員只有items,不要其他的怪蜀黍亂加成員,那么這樣做就好了:

class Stack(object):
  __slots__ = ('__items')

  def __init__(self):
    self.__items = []

這樣就安全多啦~

以上是“Python如何實現(xiàn)棧Stack”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關知識,歡迎關注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI