Python实现的栈(Stack)
前言
Python本身已有顺序表(List、Tupple)的实现,所以这里从栈开始。
什么是栈
想象一摞被堆起来的书,这就是栈。这堆书的特点是,最后被堆进去的书,永远在最上面。从这堆书里面取一本书出来,取哪本书最方便?肯定是最上面那本。栈这种数据结构的特点就是如此:后进先出(LastInFirstOut-LIFO),即最后被堆进去的数据,最先被拿出来。
栈的Python实现
栈可以用顺序表方式实现,也可以用链表方式实现。我大Python的内建数据结构太强大,可以用list直接实现栈,简单快捷。人生苦短,我用Python。代码如下:
classStack(object): #初始化栈为空列表 def__init__(self): self.items=[] #判断栈是否为空,返回布尔值 defis_empty(self): returnself.items==[] #返回栈顶元素 defpeek(self): returnself.items[len(self.items)-1] #返回栈的大小 defsize(self): returnlen(self.items) #把新的元素堆进栈里面(程序员喜欢把这个过程叫做压栈,入栈,进栈……) defpush(self,item): self.items.append(item) #把栈顶元素丢出去(程序员喜欢把这个过程叫做出栈……) defpop(self,item): returnself.items.pop() if__name__==__main__: #初始化一个栈对象 my_stack=Stack() #把'h'丢进栈里 my_stack.push('h') #把'a'丢进栈里 my_stack.push('a') #看一下栈的大小(有几个元素) printmy_stack.size() #打印栈顶元素 printmy_stack.peek() #把栈顶元素丢出去,并打印出来 printmy_stack.pop() #再看一下栈顶元素是谁 printmy_stack.peek() #这个时候栈的大小是多少? printmy_stack.size() #再丢一个栈顶元素 printmy_stack.pop() #看一下栈的大小 printmy_stack.size #栈是不是空了? printmy_stack.is_empty() #哇~真好吃~ print'Yummy~'
Tips:
看完上面的代码,聪明的同学一定知道了,Python里面实现栈,就是把list包装成一个类,再添加一些方法作为栈的基本操作。其他的数据结构在Python中也是以类似的方式实现的。
那么,这里有一些有的没的要说一下~
如果希望items[]是Stack类私有的属性,这样做就好了:
def__init__(self): self.__items=[]
没错,就是在items前面加两个下划线__,在Python中,类的私有成员就是这样定义哒~
如果希望限定Stack类的成员只有items,不要其他的怪蜀黍乱加成员,那么这样做就好了:
classStack(object): __slots__=('__items') def__init__(self): self.__items=[]
这样就安全多啦~
Python并没有Java里的public/private/protected这样的修饰符,因为Python的设计者认为,“大家都是成年人了”~
总结
以上所述是小编给大家介绍的Python实现的栈(Stack),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!