栈是一种特殊的列表,栈内的元素只能通过列表的一端访问,这一端称为栈顶。栈被称为一种后入先出(LIFO,last-in-first-out)的数据结构。

由于栈具有后入先出的特点,所以任何不在栈顶的元素都无法访问。为了得到栈底的元素,必须先拿掉上面的元素。

对栈的两种主要操作是将一个元素压入栈和将一个元素弹出栈。入栈使用push()方法,出栈使用pop()方法。下图演示了入栈和出栈的过程。

另一个常用的操作是预览栈顶的元素。pop()方法虽然可以访问栈顶的元素,但是调用该方法后,栈顶元素也从栈中被永久性地删除了。peek()方法则只返回栈顶元素,而不删除它。

为了记录栈顶元素的位置,同时也为了标记哪里可以加入新元素,我们使用变量top,当向栈内压入元素时,该变量增大;从栈内弹出元素时,该变量减小。

push()、pop()和peek()是栈的3个主要方法,但是栈还有其他方法和属性。

stack通常的操作:

Stack() 建立一个空的栈对象

push() 把一个元素添加到栈的最顶层

pop() 删除栈最顶层的元素,并返回这个元素

peek() 返回最顶层的元素,并不删除它

isEmpty() 判断栈是否为空

size() 返回栈中元素的个数

简单案例以及操作结果:

这里使用python的list对象模拟栈的实现:

class Stack:

"""模拟栈"""

def __init__(self):

self.items = []

def isEmpty(self):

return len(self.items)==0

def push(self, item):

self.items.append(item)

def pop(self):

return self.items.pop()

def peek(self):

if not self.isEmpty():

return self.items[len(self.items)-1]

def size(self):

return len(self.items)

创建一个栈对象,并加入操作方法:

s=Stack()

print(s.isEmpty())

s.push(4)

s.push('dog')

print(s.peek())

s.push(True)

print(s.size())

print(s.isEmpty())

s.push(8.4)

print(s.pop())

print(s.pop())

print(s.size())

python栈是什么意思_Python数据结构——栈相关推荐

  1. python全栈要学什么_python全栈要学什么 python全栈学习路线

    IT行业,技术要比学历.年龄.从业经验更为重要,技术水平直接决定就业薪资,想要学好python,首先要先了解精通Python语言基础.Python web开发.Python爬虫.Python数据分析这 ...

  2. python全栈需要学习什么_python全栈是什么意思

    展开全部 全栈即指的是全栈工程师,指掌握多种技62616964757a686964616fe4b893e5b19e31333431353931能,并能利用多种技能独立完成产品的人.就是与这项技能有关的 ...

  3. python前缀表达式求值_python数据结构与算法 11 后缀表达式求值

    从本节开始,删除原版的英文,直接发译后的文稿. 后缀表达式求值 栈的最一个应用例子,计算一个后缀表达式的值.这个例子中仍然用栈的数据结构.不过,当扫描表达式的时候,这次是操作数压栈等待,不是转换算法中 ...

  4. python学全栈还是运维_Python全栈学习——Python基础及Web开发

    原标题:Python全栈学习--Python基础及Web开发 在DevOps火热的敏捷行业中,无论是开发还是运维都在互联网快速发布下练就了一身的本领,微服务下的敏捷开发体系及智能运维体系都在实战中逐步 ...

  5. python的栈在哪个库_Python实现栈的方法

    本文实例讲述了Python实现栈的方法.分享给大家供大家参考.具体实现方法如下: #!/usr/bin/env python #定义一个列表来模拟栈 stack = [] #进栈,调用列表的appen ...

  6. python三剑客是什么意思_python 全栈 day09 三剑客

    Day 09 复习 知识点回顾: 1.用户分类 管理员 rootUID: 0 虚拟用户 傀儡用户 不允许登录 没有家目录 用来启动程序UID: 1-999 普通用户 自己创建 可以登录 有家目录 UI ...

  7. python全栈开发百度云_Python全栈开发9期视频

    Python全栈开发9期视频 获取教程链接的步骤 2. 用微博或QQ登录编程资源库网站 3.点击兑换按钮,兑换百度云链接 教程要积分! 声明 教程由粉丝投稿,仅供学习和交流,侵删 以下凑字数!请自行忽 ...

  8. python全栈开发实践入门_Python全栈开发实践入门

    Python全栈开发实践入门 编辑 锁定 讨论 上传视频 <Python全栈开发实践入门>是2017年10月电子工业出版社出版的图书,作者是谢瑛俊. 书 名 Python全栈开发实践入门 ...

  9. python编程玩具有哪些_python 全栈开发,Day133(玩具与玩具之间的对话,基于jieba gensim pypinyin实现的自然语言处理,打包apk)...

    先下载github代码,下面的操作,都是基于这个版本来的! 注意:由于涉及到版权问题,此附件没有图片和音乐.请参考链接,手动采集一下! 请参考链接: 一.玩具与玩具之间的对话 app消息提醒 之前实现 ...

最新文章

  1. css实现 textarea 高度自适应
  2. python地理_【Python教程】地理可视化
  3. ivew 的ajax,iView-Upload组件分析
  4. 详解:设计模式之-代理设计
  5. Spring框架整合MyBatis框架
  6. 枚举算法:求解不等式
  7. sql between包括两端吗_sql:简单查询
  8. 美团多渠道打包原理以及使用
  9. 正点原子STM32F103(精英版)------STM32时钟系统
  10. 绿联网卡转接mac设置_苹果中文系统USB外置网卡驱动安装方法
  11. LEACH算法改进 SEP算法源代码
  12. 阿铭Linux_网站维护学习笔记20190417
  13. Mac突然中文输入法框不见了??
  14. 音视频开发系列(24)使用FFmpeg添加、删除、替换和提取视频中的音频
  15. 3款Mac上相见恨晚的软件
  16. 听歌的时候再也不用各个音乐播放软件来回切换啦!
  17. 数据库查询报错Error Code 1064
  18. 线索二叉树的前序遍历
  19. beta值是一种风险指数
  20. 网民热议:顺丰菜鸟之争凸显大数据巨大商业价值

热门文章

  1. 7 个习惯帮你提升Python运行性能
  2. C语言socket()函数解析(创建套接字)af地址族,ip地址类型(Address Family)INET(Inetnet)PF(Protocol Family)
  3. ubuntu 编译c程序报错:对‘pthread_create’未定义的引用
  4. (深入理解计算机系统) bss段,data段、text段、堆(heap)和栈(stack)(C/C++存储类型总结)(内存管理)
  5. python multiprocessing 进程间如何共享数据、对象
  6. 计算机现代管理专业,信息管理与信息系统是个鸡肋专业吗?
  7. 重置样式表--HTML
  8. html获取鼠标按键数,鼠标在IE、Firefox和Opera点击键所对应的数字代码
  9. 给单片机焼写程序需要什么东西_单片机怎么烧写程序
  10. mac 卸载 eclipse_Mac 新手准备工具集合