Python 数据结构之堆栈实例代码


Posted in Python onJanuary 22, 2017

Python 堆栈

堆栈是一个后进先出(LIFO)的数据结构. 堆栈这个数据结构可以用于处理大部分具有后进先出的特性的程序流 .
在堆栈中, push 和 pop 是常用术语:

  • push: 意思是把一个对象入栈.
  • pop: 意思是把一个对象出栈.

下面是一个由 Python 实现的简单的堆栈结构:

stack = []         # 初始化一个列表数据类型对象, 作为一个栈

def pushit():       # 定义一个入栈方法
  stack.append(raw_input('Enter New String: ').strip())   
  # 提示输入一个入栈的 String 对象, 调用 Str.strip() 保证输入的 String 值不包含多余的空格

def popit():        # 定义一个出栈方法
  if len(stack) == 0:
    print "Cannot pop from an empty stack!"
  else:
    print 'Remove [', `stack.pop()`, ']'
    # 使用反单引号(` `)来代替 repr(), 把 String 的值用引号扩起来, 而不仅显示 String 的值

def viewstack():      # 定义一个显示堆栈中的内容的方法
    print stack

CMDs = {'u':pushit, 'o':popit, 'v':viewstack}
# 定义一个 Dict 类型对象, 将字符映射到相应的 function .可以通过输入字符来执行相应的操作

def showmenu():      # 定义一个操作菜单提示方法
  pr = """
  p(U)sh
  p(O)p
  (V)iew
  (Q)uit

  Enter choice: """

  while True:
    while True:
      try:
        choice = raw_input(pr).strip()[0].lower()
        # Str.strip() 去除 String 对象前后的多余空格
        # Str.lower() 将多有输入转化为小写, 便于后期的统一判断
        # 输入 ^D(EOF, 产生一个 EOFError 异常)
        # 输入 ^C(中断退出, 产生一个 keyboardInterrupt 异常)

      except (EOFError, KeyboardInterrupt, IndexError):
        choice = 'q'

      print '\nYou picked: [%s]' % choice

      if choice not in 'uovq':
        print 'Invalid option, try again'
      else:
        break


    if choice == 'q':
      break
    CMDs[choice]()
    # 获取 Dict 中字符对应的 functionName, 实现函数调用

if __name__ == '__main__':
  showmenu()

NOTE: 在堆栈数据结构中, 主要应用了 List 数据类型对象的 容器 和 可变 等特性, 表现在 List.append() 和 List.pop() 这两个列表类型内建函数的调用.

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Python 相关文章推荐
Python ORM框架SQLAlchemy学习笔记之安装和简单查询实例
Jun 10 Python
Python库urllib与urllib2主要区别分析
Jul 13 Python
Python THREADING模块中的JOIN()方法深入理解
Feb 18 Python
Python3读取UTF-8文件及统计文件行数的方法
May 22 Python
Python之Scrapy爬虫框架安装及使用详解
Nov 16 Python
python smtplib模块实现发送邮件带附件sendmail
May 22 Python
python 把列表转化为字符串的方法
Oct 23 Python
Python3.5字符串常用操作实例详解
May 01 Python
python实现从wind导入数据
Dec 03 Python
python实现Pyecharts实现动态地图(Map、Geo)
Mar 25 Python
Node.js 和 Python之间该选择哪个?
Aug 05 Python
plt.figure()参数使用详解及运行演示
Jan 08 Python
Python 常用 PEP8 编码规范详解
Jan 22 #Python
python学习之面向对象【入门初级篇】
Jan 21 #Python
Python中struct模块对字节流/二进制流的操作教程
Jan 21 #Python
python使用xlrd与xlwt对excel的读写和格式设定
Jan 21 #Python
Python第三方库xlrd/xlwt的安装与读写Excel表格
Jan 21 #Python
python实现的多线程端口扫描功能示例
Jan 21 #Python
Python 字符串大小写转换的简单实例
Jan 21 #Python
You might like
smarty 缓存控制前的页面静态化原理
2013/03/15 PHP
Yii框架创建cronjob定时任务的方法分析
2017/05/23 PHP
基于Jquery的将DropDownlist的选中值赋给label的实现代码
2011/05/06 Javascript
基于jQuery实现的水平和垂直居中的div窗口
2011/08/08 Javascript
javascript小组件 原生table排序表格脚本(兼容ie firefox opera chrome)
2012/07/25 Javascript
javascript实现div的显示和隐藏的小例子
2013/06/25 Javascript
使用js正则控制input标签只允许输入的值
2013/07/29 Javascript
JavaScript实现从数组中选出和等于固定值的n个数
2014/09/03 Javascript
JQuery设置时间段下拉选择实例
2014/12/30 Javascript
javascript 构造函数方式定义对象
2015/01/02 Javascript
js使用DOM设置单选按钮、复选框及下拉菜单的方法
2015/01/20 Javascript
JavaScript实现自动变换表格边框颜色
2015/05/08 Javascript
深入学习jQuery Validate表单验证
2016/01/18 Javascript
angularjs ui-router中路由的二级嵌套
2017/03/10 Javascript
vuejs如何配置less
2017/04/25 Javascript
微信小程序表单验证错误提示效果
2017/05/19 Javascript
React-Native 组件之 Modal的使用详解
2017/08/08 Javascript
浅谈Vue Element中Select下拉框选取值的问题
2018/03/01 Javascript
了解前端理论:rscss和rsjs
2019/05/23 Javascript
layui数据表格实现重载数据表格功能(搜索功能)
2019/07/27 Javascript
el-select 下拉框多选实现全选的实现
2019/08/02 Javascript
jQuery实现鼠标拖拽登录框移动效果
2020/09/13 jQuery
Python 读写文件和file对象的方法(推荐)
2016/09/12 Python
详解python websocket获取实时数据的几种常见链接方式
2019/07/01 Python
python中前缀运算符 *和 **的用法示例详解
2020/05/28 Python
python中time tzset()函数实例用法
2021/02/18 Python
CSS3中新增的对文本和字体的设置
2020/02/03 HTML / CSS
Foreo国际站:Foreo International
2018/10/29 全球购物
Marlies Dekkers内衣美国官方网上商店:高端内衣品牌
2018/11/12 全球购物
马歇尔耳机官网:Marshall Headphones
2020/02/04 全球购物
大唐电信科技股份有限公司java工程师面试经历
2016/12/09 面试题
产品质量承诺书
2014/03/27 职场文书
大学专科求职信
2014/07/02 职场文书
2014年大堂经理工作总结
2014/11/21 职场文书
党员倡议书
2015/01/19 职场文书
讲座通知范文
2015/04/23 职场文书