棧(Stack)的Python實現__Python

來源:互聯網
上載者:User
前言

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

想象一摞被堆起來的書,這就是棧。這堆書的特點是,最後被堆進去的書,永遠在最上面。從這堆書裡面取一本書出來,取哪本書最方便。肯定是最上面那本。棧這種資料結構的特點就是如此:後進先出(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並沒有Java裡的public/private/protected這樣的修飾符,因為Python的設計者認為,“大家都是成年人了”~

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.