亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python實(shí)現(xiàn)的棧(Stack)

 更新時(shí)間:2018年01月26日 16:36:12   作者:BenCotreJohnson  
棧作為一種數(shù)據(jù)結(jié)構(gòu),是一種只能在一端進(jìn)行插入和刪除操作。這篇文章給大家介紹了Python實(shí)現(xiàn)的棧(Stack)的相關(guān)資料,感興趣的朋友一起看看吧

前言

Python本身已有順序表(List、Tupple)的實(shí)現(xiàn),所以這里從棧開(kāi)始。

什么是棧

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

棧的Python實(shí)現(xiàn)

??梢杂庙樞虮矸绞綄?shí)現(xiàn),也可以用鏈表方式實(shí)現(xiàn)。我大Python的內(nèi)建數(shù)據(jù)結(jié)構(gòu)太強(qiáng)大,可以用list直接實(shí)現(xiàn)棧,簡(jiǎ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)
  # 把新的元素堆進(jìn)棧里面(程序員喜歡把這個(gè)過(guò)程叫做壓棧,入棧,進(jìn)?!?
  def push(self, item):
    self.items.append(item)
  # 把棧頂元素丟出去(程序員喜歡把這個(gè)過(guò)程叫做出?!?
  def pop(self, item):
    return self.items.pop()
if __name__ == __main__:
  # 初始化一個(gè)棧對(duì)象
  my_stack = Stack()
  # 把'h'丟進(jìn)棧里
  my_stack.push('h')
  # 把'a'丟進(jìn)棧里
  my_stack.push('a')
  # 看一下棧的大小(有幾個(gè)元素)
  print my_stack.size()
  # 打印棧頂元素
  print my_stack.peek()
  # 把棧頂元素丟出去,并打印出來(lái)
  print my_stack.pop()
  # 再看一下棧頂元素是誰(shuí)
  print my_stack.peek()
  # 這個(gè)時(shí)候棧的大小是多少?
  print my_stack.size()
  # 再丟一個(gè)棧頂元素
  print my_stack.pop()
  # 看一下棧的大小
  print my_stack.size
  # 棧是不是空了?
  print my_stack.is_empty()
  # 哇~真好吃~
  print 'Yummy~'

Tips:

看完上面的代碼,聰明的同學(xué)一定知道了,Python里面實(shí)現(xiàn)棧,就是把list包裝成一個(gè)類,再添加一些方法作為棧的基本操作。其他的數(shù)據(jù)結(jié)構(gòu)在Python中也是以類似的方式實(shí)現(xiàn)的。
那么,這里有一些有的沒(méi)的要說(shuō)一下~

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

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

沒(méi)錯(cuò),就是在items前面加兩個(gè)下劃線__,在Python中,類的私有成員就是這樣定義噠~

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

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

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

這樣就安全多啦~

Python并沒(méi)有Java里的public/private/protected這樣的修飾符,因?yàn)镻ython的設(shè)計(jì)者認(rèn)為,“大家都是成年人了”~

總結(jié)

以上所述是小編給大家介紹的Python實(shí)現(xiàn)的棧(Stack),希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

最新評(píng)論