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

 更新时间:2017年01月22日 14:43:20   投稿:lqh  
这篇文章主要介绍了Python 数据结构之堆栈实例代码的相关资料,需要的朋友可以参考下

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使用scrapy采集时伪装成HTTP/1.1的方法

    Python使用scrapy采集时伪装成HTTP/1.1的方法

    这篇文章主要介绍了Python使用scrapy采集时伪装成HTTP/1.1的方法,实例分析了scrapy采集的使用技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • Python requests获取网页常用方法解析

    Python requests获取网页常用方法解析

    这篇文章主要介绍了Python requests获取网页常用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • 解决同一目录下python import报错问题

    解决同一目录下python import报错问题

    这篇文章主要介绍了解决同一目录下python import报错问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • django的分页器Paginator 从django中导入类

    django的分页器Paginator 从django中导入类

    这篇文章主要介绍了django的分页器Paginator 从django中导入类,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • 解决TensorFlow训练模型及保存数量限制的问题

    解决TensorFlow训练模型及保存数量限制的问题

    这篇文章主要介绍了解决TensorFlow训练模型及保存数量限制的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • python的scikit-learn将特征转成one-hot特征的方法

    python的scikit-learn将特征转成one-hot特征的方法

    今天小编就为大家分享一篇python的scikit-learn将特征转成one-hot特征的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • Python实现

    Python实现"验证回文串"的几种方法

    这篇文章主要介绍了Python实现"验证回文串"的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • TensorFlow Autodiff自动微分详解

    TensorFlow Autodiff自动微分详解

    这篇文章主要介绍了TensorFlow Autodiff自动微分详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • python实现通过shelve修改对象实例

    python实现通过shelve修改对象实例

    这篇文章主要介绍了python实现通过shelve修改对象实例,是一个比较实用的技巧,需要的朋友可以参考下
    2014-09-09
  • YOLOV5代码详解之损失函数的计算

    YOLOV5代码详解之损失函数的计算

    YOLOV4出现之后不久,YOLOv5横空出世,YOLOv5在YOLOv4算法的基础上做了进一步的改进,检测性能得到进一步的提升,这篇文章主要给大家介绍了关于YOLOV5代码详解之损失函数计算的相关资料,需要的朋友可以参考下
    2022-03-03

最新评论