91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

Python如何實現棧Stack

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

這篇文章主要介紹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”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

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

AI

岳普湖县| 航空| 武宁县| 茶陵县| 平和县| 库伦旗| 涿州市| 通化市| 上虞市| 博兴县| 海盐县| 台江县| 泰顺县| 西乡县| 沁水县| 辉县市| 化隆| 太和县| 独山县| 大兴区| 高密市| 栾城县| 北宁市| 石城县| 赣州市| 洪洞县| 辽阳县| 拜城县| 松桃| 镇康县| 当阳市| 宝应县| 长春市| 大余县| 都匀市| 潼南县| 辰溪县| 水城县| 临泉县| 开远市| 高邑县|