Python实现栈及其简单应用
Python实现栈
定义栈类
class Stack(object):# 初始化栈为空列表def __init__(self):self.items = []# 判断栈是否为空,返回布尔值def is_Empty(self):return self.items == []# 返回栈顶元素# 如果为空返回Nonedef peek(self):if self.is_Empty():return Nonereturn self.items[len(self.items) - 1]# 返回栈大小def size(self):return len(self.items) # 压栈,添加新元素进栈def push(self, item):self.items.append(item)# 出栈,删除栈顶元素def pop(self):return self.items.pop()
简单的栈测试
if __name__ == "__main__":# 初始化一个栈对象my_stack = Stack()my_stack.push('h')print("压栈:{}".format(my_stack.peek()))my_stack.push('a')print("压栈:{}".format(my_stack.peek()))print("此时栈大小为:{},栈顶元素为:{}".format(my_stack.size(), my_stack.peek()))print("出栈:{}".format(my_stack.pop()))print("栈是否为空:{}".format(my_stack.is_Empty()))print("此时栈大小为:{},栈顶元素为:{}".format(my_stack.size(), my_stack.peek()))print("出栈:{}".format(my_stack.pop()))print("栈是否为空:{}".format(my_stack.is_Empty()))print("此时栈大小为:{},栈顶元素为:{}".format(my_stack.size(), my_stack.peek()))print("栈是否为空:{}".format(my_stack.is_Empty()))"""压栈:h压栈:a此时栈大小为:2,栈顶元素为:a出栈:a栈是否为空:False此时栈大小为:1,栈顶元素为:h出栈:h栈是否为空:True此时栈大小为:0,栈顶元素为:None栈是否为空:True"""
栈应用——检测字符串中的括号是否成对
def syntaxChecker(string):stack = Stack()opens = '([{'closes = ')]}'balanced = Truefor i in string:if i in '([{':stack.push(i)elif i in ')]}':if stack.is_Empty():balanced = Falsebreakelse:j = stack.pop()if opens.find(i) != closes.find(j):balanced = Falsebreakif not stack.is_Empty():balanced = Falsereturn balanced
- 首先创建一个栈对象,并新建一个包含所有左括号的数组和一个包含所有右括号的数组(注意同种括号下标需要对应),接着讲匹配状态设为True
- 然后对输入的字符串进行判断
- 如果匹配到左括号,则压栈
- 如果匹配到右括号
- 如果此时栈为空,匹配状态设为False,因为空栈缺少左括号肯定是不匹配
- 如果栈不为空,则出栈当前的栈顶元素,如果此时符号类型匹配,则确定是一组括号
- 循环直到无法匹配到括号
- 最后判断如果栈不为空,则匹配失败,如果匹配成功则匹配状态不做修改仍为True
- 返回匹配状态
栈应用——十进制转换为二进制
def decimal_to_bin(dec):stack = Stack()bin_str = ''if dec == 0:stack.push(0)while dec > 0:a = dec % 2stack.push(a)dec = int(dec / 2)while not stack.is_Empty():bin_str += str(stack.pop())return bin_str
- 首先创建一个栈对象,和一个存储二进制数的字符串,函数传入待转换的十进制数
- 提前判断该数是不是0,如果是0则直接压栈0
- 非零则开始执行转换操作
- 将十进制数%2后的结果压入栈
- 然后将十进制数/2得到新的数
- 如此循环直到所得十进制数小于一
- 注意这个过程中为了避免小数所以执行了强制类型转换
- 循环结束后如果栈不为空,则将之前压栈的元素全部按顺序出栈组成一个二进制的字符串,返回之
Python实现栈及其简单应用相关推荐
- python实现栈的操作_python简单实现队列和栈push、pop操作
栈: # -*- coding: utf-8 -*- #定义序列 lst=[] def pop(): if(len(lst)==0): print"栈为空","无法出栈& ...
- 美国AI博士指出:60天掌握Python全栈需要...
我见过市面上很多的 Python 讲解教程和书籍,他们大都这样讲 Python 的: 先从 Python 的发展历史开始,介绍 Python 的基本语法规则,Python 的 list, dict, ...
- python利器手机版-将安卓手机打造成你的python全栈开发利器
超神利器- 相信多数安卓用户都使用过Qpython这款移动端的Python编辑器吧?之前我也研究过一阵子这个工具,但因为一次简单的爬虫让我对它失望之极.Qpython不支持lxml这个模块,然而pyt ...
- termux pythonlxml安装_将安卓手机打造成你的python全栈开发利器
原标题:将安卓手机打造成你的python全栈开发利器 超神利器 相信多数安卓用户都使用过Qpython这款移动端的Python编辑器吧?之前我也研究过一阵子这个工具,但因为一次简单的爬虫让我对它失望之 ...
- 基于Python技术栈的算法落地踩坑
背景介绍 在一些业务场景,我们需要把离线训练好的模型以微服务部署线上,如果是简单的使用sklearn pipeline,可以保存为XML格式的pmml供Java调用, 在配置为4 core,8G内存的 ...
- python全栈开发中级班全程笔记(第二模块、第四章)(常用模块导入)
python全栈开发笔记第二模块 第四章 :常用模块(第二部分) 一.os 模块的 详解 1.os.getcwd() :得到当前工作目录,即当前python解释器所在目录路径 impor ...
- python全栈开发优势_Python全栈开发多少钱?学Python价格贵吗?
Python全栈开发培训多少钱?学习Python是大家进入编程世界的理想之选,而且Python也是一门非常受欢迎的编程,可以从事的领域有很多. 从目前市场上的行情来说,一般情况下Python培训的费用 ...
- python实现栈的操作入站出站查找元素等_Python实现的栈(Stack)
前言 Python本身已有顺序表(List.Tupple)的实现,所以这里从栈开始. 什么是栈 想象一摞被堆起来的书,这就是栈.这堆书的特点是,最后被堆进去的书,永远在最上面.从这堆书里面取一本书出来 ...
- 30岁学python全栈_知乎热帖!戳痛100万程序员:我30岁了,我还能学Python吗?
" 每个人对如何度过一生有着不同的答案,最重要的不是要不要"开始学习Python",而是认识你自己. --LEWIS " 最近,在知乎上看到关于30岁能不能学P ...
最新文章
- python3.6for循环_使用parser_args值输入for循环(python3.6)
- C#中使用DbHelper连接SqlServer数据库
- 试题 历届试题 买不到的数目(dp/数学)
- Ubuntu常用软件安装(小集合)
- Bootstrap 编译版文件结构
- php排斥ajaxsubmit函数,jQuery中的ajaxSubmit详解
- angular-Forms patchValue and setValue
- 第三方支付龙头拉卡拉IPO过会
- python 程序运行时间长,python查看程序运行时间的方法
- 零知识证明 - bellman源码分析
- element-ui的标签页之间跳转 - 默认选中
- 精神分裂型患者大脑结构和功能连接的改变
- 深度至尊GHOST_XPSP3快速装机专业版V8.0
- 微信公众号-java上传图片素材到微信服务器基于事件推送两条消息
- PTA 最佳情侣身高差
- 写一个程序来确定到底谁是凶手
- 4G网络车载GPS定位器隐藏装在车头影响LTE网络信号影响及因素
- 面渣逆袭:线程池夺命连环十八问
- 如何从excel的多行中随机选出n行
- 2021年N1叉车司机模拟考试题库软件及N1叉车司机全国真题汇总
热门文章
- 职场必知的20条黄金法则
- 服务器上可以跑,本地Pycharm中报错Ninja is required to load C++ extensions
- JAVA日常开发中常用的日志记录方式,攒个赞好不好?
- webRtc播放rtsp视频流(vue2、vue3+vite+ts)
- H.265与H.264的差异详解
- 天下事以难而废者十之一,以惰而废者十之九。(南北朝 颜之推 《颜氏家训》)...
- python 汉字 和 urlEncode 编码 互转
- 移动端图片鉴黄(可离线识别 200ms)
- 在html中打出一条虚线
- Hive实现共同好友统计