国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python實現的棧(Stack)

2020-01-04 16:08:51
字體:
來源:轉載
供稿:網友

前言

Python本身已有順序表(List、Tupple)的實現,所以這里從棧開始。

什么是棧

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

棧的Python實現

??梢杂庙樞虮矸绞綄崿F,也可以用鏈表方式實現。我大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并沒有Java里的public/private/protected這樣的修飾符,因為Python的設計者認為,“大家都是成年人了”~

總結

以上所述是小編給大家介紹的Python實現的棧(Stack),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VEVB武林網網站的支持!


注:相關教程知識閱讀請移步到python教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南溪县| 玉龙| 白水县| 永和县| 宝兴县| 湖口县| 左权县| 建平县| 通榆县| 堆龙德庆县| 鸡泽县| 娄烦县| 筠连县| 黔西| 清镇市| 肥乡县| 龙口市| 常宁市| 建水县| 绍兴市| 邛崃市| 铜川市| 陇南市| 广水市| 礼泉县| 朔州市| 临沂市| 上高县| 平邑县| 民勤县| 新建县| 西青区| 淮滨县| 海淀区| 孝义市| 曲阳县| 浠水县| 临泉县| 山东省| 峡江县| 泰安市|