<kbd id='woaibaidu'></kbd><address id='woaibaidu'><style id='woaibaidu'></style></address><button id='woaibaidu'></button>

          当前位置:主页 > 脚本专栏 > python >
            Python实现的栈(Stack)
            2018-01-29 22:12 发布 次浏览

          前言

          Python自身已有顺序表(List、Tupple)的完成,所以这里从栈开端。

          甚么是栈

          想象1摞被堆起来的书,这就是栈。这堆书的特点是,最初被堆出来的书,永久在最下面。从这堆书外面取1本书出来,取哪本书最利便?一定是最下面那本。栈这类数据构造的特点就是如此:落后先出(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__:
            # 初始化1个栈工具
            my_stack = Stack()
            # 把'h'丢进栈里
            my_stack.push('h')
            # 把'a'丢进栈里
            my_stack.push('a')
            # 看1下栈的巨细(有几个元素)
            print my_stack.size()
            # 打印栈顶元素
            print my_stack.peek()
            # 把栈顶元素丢出去,并打印出来
            print my_stack.pop()
            # 再看1下栈顶元素是谁
            print my_stack.peek()
            # 这个时分栈的巨细是几多?
            print my_stack.size()
            # 再丢1个栈顶元素
            print my_stack.pop()
            # 看1下栈的巨细
            print my_stack.size
            # 栈是否是空了?
            print my_stack.is_empty()
            # 哇~真好吃~
            print 'Yummy~'

          Tips:

          看完下面的代码,智慧的同窗1定晓得了,Python外面完成栈,就是把list包装成1个类,再添加1些办法作为栈的根本操作。其他的数据构造在Python中也是以相似的方式完成的。
          那末,这里有1些有的没的要说1下~

          假如希望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),希望对各人有所协助,假如各人有任何疑问请给我留言,小编会实时回复各人的。在此也十分感激各人对聚合网网站的支持!