前言
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的设计者认为,“大家都是成年人了”~
总结
以上所述是小编给大家介绍的Python实现的栈(Stack),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
- 第五街的士高《印度激情版》3CD [WAV+CUE][2.4G]
- 三国志8重制版哪个武将智力高 三国志8重制版智力武将排行一览
- 三国志8重制版哪个武将好 三国志8重制版武将排行一览
- 三国志8重制版武将图像怎么保存 三国志8重制版武将图像设置方法
- 何方.1990-我不是那种人【林杰唱片】【WAV+CUE】
- 张惠妹.1999-妹力新世纪2CD【丰华】【WAV+CUE】
- 邓丽欣.2006-FANTASY【金牌大风】【WAV+CUE】
- 饭制《黑神话》蜘蛛四妹手办
- 《燕云十六声》回应跑路:年内公测版本完成95%
- 网友发现国内版《双城之战》第二季有删减:亲亲环节没了!
- 邓丽君2024-《漫步人生路》头版限量编号MQA-UHQCD[WAV+CUE]
- SergeProkofievplaysProkofiev[Dutton][FLAC+CUE]
- 永恒英文金曲精选4《TheBestOfEverlastingFavouritesVol.4》[WAV+CUE]
- 群星《国风超有戏 第9期》[320K/MP3][13.63MB]
- 群星《国风超有戏 第9期》[FLAC/分轨][72.56MB]