python中栈的原理及实现方法示例


Posted in Python onNovember 27, 2019

本文实例讲述了python中栈的原理及实现方法。分享给大家供大家参考,具体如下:

栈(stack),有些地方称为堆栈,是一种容器,可存入数据元素、访问元素、删除元素,它的特点在于只能允许在容器的一端(称为栈顶端指标,英语:top)进行加入数据(英语:push)和输出数据(英语:pop)的运算。没有了位置概念,保证任何时候可以访问、删除的元素都是此前最后存入的那个元素,确定了一种默认的访问顺序。

由于栈数据结构只允许在一端进行操作,因而按照后进先出(LIFO, Last In First Out)的原理运作。

栈结构实现

栈可以用顺序表实现,也可以用链表实现。

栈的操作

  • Stack() 创建一个新的空栈
  • push(item) 添加一个新的元素item到栈顶
  • pop() 弹出栈顶元素
  • peek() 返回栈顶元素
  • is_empty() 判断栈是否为空
  • size() 返回栈的元素个数

示例:

class Stack(object):
  """栈"""
  def __init__(self):
     self.items = []
  def is_empty(self):
    """判断是否为空"""
    return self.items == []
  def push(self, item):
    """加入元素"""
    self.items.append(item)
  def pop(self):
    """弹出元素"""
    return self.items.pop()
  def peek(self):
    """返回栈顶元素"""
    return self.items[len(self.items)-1]
  def size(self):
    """返回栈的大小"""
    return len(self.items)
if __name__ == "__main__":
  stack = Stack()
  stack.push("hello")
  stack.push("world")
  stack.push("itcast")
  print stack.size()
  print stack.peek()
  print stack.pop()
  print stack.pop()
  print stack.pop()

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
使用Python的Flask框架实现视频的流媒体传输
Mar 31 Python
浅谈django model的get和filter方法的区别(必看篇)
May 23 Python
python3 面向对象__类的内置属性与方法的实例代码
Nov 09 Python
python ddt数据驱动最简实例代码
Feb 22 Python
详解python的argpare和click模块小结
Mar 31 Python
PYTHON实现SIGN签名的过程解析
Oct 28 Python
Python类如何定义私有变量
Feb 03 Python
tensorflow:指定gpu 限制使用量百分比,设置最小使用量的实现
Feb 06 Python
python3 deque 双向队列创建与使用方法分析
Mar 24 Python
python mock测试的示例
Oct 19 Python
python 用Matplotlib作图中有多个Y轴
Nov 28 Python
pip install命令安装扩展库整理
Mar 02 Python
关于Numpy数据类型对象(dtype)使用详解
Nov 27 #Python
python队列原理及实现方法示例
Nov 27 #Python
Python numpy.zero() 初始化矩阵实例
Nov 27 #Python
python双端队列原理、实现与使用方法分析
Nov 27 #Python
Python实现RGB与HSI颜色空间的互换方式
Nov 27 #Python
OpenCV+Python--RGB转HSI的实现
Nov 27 #Python
解决pycharm启动后总是不停的updating indices...indexing的问题
Nov 27 #Python
You might like
PHP编程函数安全篇
2013/01/08 PHP
微信公众号开发之通过接口删除菜单
2017/02/20 PHP
Js sort排序使用方法
2011/10/17 Javascript
jQuery 翻牌或百叶窗效果(内容三秒自动切换)
2012/06/14 Javascript
用js+iframe形成页面的一种遮罩效果的具体实现
2013/12/31 Javascript
js 判断js函数、变量是否存在的简单示例代码
2014/03/04 Javascript
推荐一个封装好的getElementsByClassName方法
2014/12/02 Javascript
JavaScript创建对象的方式小结(4种方式)
2015/12/17 Javascript
JavaScript禁止用户多次提交的两种方法
2016/07/24 Javascript
Ionic3 UI组件之Gallery Modal详解
2017/06/07 Javascript
初识 Vue.js 中的 *.Vue文件
2017/11/22 Javascript
Vue.js进阶知识点总结
2018/04/01 Javascript
r.js来合并压缩css文件的示例
2018/04/26 Javascript
vue生命周期的探索
2019/04/03 Javascript
详解使用JWT实现单点登录(完全跨域方案)
2019/08/02 Javascript
[36:43]NB vs Optic 2018国际邀请赛小组赛BO1 B组加赛 8.19
2018/08/21 DOTA
Python实现栈的方法
2015/05/26 Python
Python基于高斯消元法计算线性方程组示例
2018/01/17 Python
多个应用共存的Django配置方法
2018/05/30 Python
详解python做UI界面的方法
2019/02/27 Python
python全栈知识点总结
2019/07/01 Python
在django中图片上传的格式校验及大小方法
2019/07/28 Python
Python人工智能之路 之PyAudio 实现录音 自动化交互实现问答
2019/08/13 Python
html5调用摄像头功能的实现代码
2018/05/07 HTML / CSS
HTML5 Canvas之测试浏览器是否支持Canvas的方法
2015/01/01 HTML / CSS
土耳其风格手工珠宝:Ottoman Hands
2019/07/26 全球购物
几个判断型的面试题
2012/07/03 面试题
党员公开承诺书范文
2014/03/25 职场文书
公司董事长助理工作职责
2014/07/12 职场文书
2014年教研员工作总结
2014/12/23 职场文书
复兴之路展览观后感
2015/06/02 职场文书
工商局调档介绍信
2015/10/22 职场文书
2016年学校招生广告语
2016/01/28 职场文书
餐厅开业活动方案
2019/07/08 职场文书
理解深度学习之深度学习简介
2021/04/14 Python
golang通过递归遍历生成树状结构的操作
2021/04/28 Golang