python定义栈_Python开发中栈的定义及用法详解

前言

在Python开发中栈的设计和使用是常用到的,可以说是学习Python必须要掌握的一个技能,那么作为程序猿的你掌握了多少呢?掌握不熟练?没关系,跟着小编再来学习一下吧。

正文

栈是常用的数据结构。尽管一般的面试里不会让直接写一个栈的实现,不过跟栈有关的编程题很多,今天就遇到一个。

首先看一下栈的定义。栈是一个集合,具有下面的2种基本操作

push: 把元素加入集合,这个过程我们叫做压入

pop: 把最后加入集合的元素从集合中移除,这个过程我们叫做推出

所以栈在移除元素的时候是遵循LIFO(last in, first out),也就是后进先出的原则的。

直接设计代码:class stack(object):

"""docstring for stack"""

def __init__(self, data):

self.data = []

def push(self,elm):

self.data.append(elm)

def pop(self):

self.data.pop()

def len(self):

return len(self.data)

def is_empty(self):

return len(self)== 0

题目:请使用代码实现判断表达式中小括号是否匹配的功能。如果匹配返回True,否则返回False。比如(x * (y +z)) +10中,小括号是匹配的。而(a + b) * )c - d中小括号是不匹配的。

遍历表达式每一个字符

如左括号,将左括号压入栈

如右括号,则判断栈是否为空,不为空则推出,为空就证明右括号没有匹配的项目,返回False

遍历结束之后判断栈是否为空,不为空则返回False,否则返回True

完整代码实现如下

def match_parentthese(erp):

data = stack()

for ele in erp:

if ele == "(":

data.push(ele)

elif ele == ")":

if data.is_empty():

return False

break

else:

data.pop()

else:

pass

if data.is_empty():

return True

else:

return False

结尾

通过本文各位小盆友们是不是对于Python开发中的栈有了一定的了解了?平时还得靠小伙伴们的多多练习学以致用啊。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值