首页 > 编程语言 >python初步了解栈

python初步了解栈

时间:2022-12-09 17:58:00浏览次数:41  
标签:python pop 初步 了解 表达式 l1 print stack append

python初步了解栈

栈是一种后入先出的数据结构。

python用列表实现堆栈非常容易,使用append函数,即可实现堆栈,pop()函数即可实现从栈顶取出元素。

stack = [3, 4, 5]
stack.append(6)
stack.append(7)
print(stack)
#[3, 4, 5, 6, 7]
print(stack.pop())
#7
print(stack)
#[3, 4, 5, 6]
print(stack.pop())
#6
print(stack.pop())
#5
print(stack)
#[3, 4]#####队列

使用栈来完成中缀表达式转后缀表达式的问题

如:将3(5–2)+7转换为352-7+

完成这个问题有以下几个要点

对于输入的算式,先对它的每个元素进行判断,建立一个存储运符的栈,和最终表达式。

(1)如果元素为数字则直接存入最终表达式中,如果不是,则再进行判断。

(2)当遇到左括号存入栈。

(3)当遇到右括号,不断从栈中取出符号,存入最终表达式,直到取到左括号。

(4)遇到运算符,先将它与栈顶的符号进行优先级判断,如果运算符的优先级大等于栈顶的符号,则不断取出栈顶,存入最终表达式中。

(优先级乘除>加减>左括号)

最后从栈顶不断取出剩余的运算符,存入最终表达式

def pd(a):
    if a in '*/':
        return 3
    elif a in '+-':
        return 2
    else:
        return 1
l = list(input("请输入表达式:"))
l1=[]
r=[]
for i in l:
    if i in "+-*/":
        if l1:
            while (pd(l1[-1]) >= pd(i)):
                r.append(l1.pop())
                if len(l1) == 0:
                    break
            l1.append(i)
        else:
            l1.append(i)
    elif i == '(':
        l1.append(i)
    elif i == ')':
        t = l1.pop()
        while t != '(':
            r.append(t)
            t = l1.pop()
    else:
        r.append(i)
while l1:
    for i in l1:
        r.append(l1.pop())
for i in r:
    print(i,end='')

标签:python,pop,初步,了解,表达式,l1,print,stack,append
From: https://www.cnblogs.com/102204216zxf/p/16969614.html

相关文章

  • python序列
    python序列序列包括字符串,元组,列表序列的操作在三者中都适用,同时三者存在特定的操作操作符操作作用ain/notins判断元素是否在序列中s+t连接两个序......
  • python元组
    python元组元组具体格式如下:a=(1,2)以上两个都是元组,但是一般为了易读和方便,一般使用带小括号的方式。元组的创建:a=()x=tuple()print(type(a))print(type(x......
  • python字符串
    python学习字符串处理方法1.大小写转换函数作用str.lower()全小写str.upper()全大写str.capitalize()第一个字符大写str.swapcase()大写转小写,小......
  • python集合
    python集合集合同dict类似也由{}表示,但是他只包含键,而没有对应的值,同时元素也不能重复集合的创建只能用set():a=set()print(type(a))#<class'set'>内置方法(1)se......
  • python字典
    python字典字典由key和value组成,一个key对应一个value,且key不能重复,这样我们能通过key来访问value。我们可以通过以下两中方式创建一个空字典dic1={}dic2=dict()......
  • python列表
    列表的运用1.减少元素(1)dells[]place=['lasa','chengdu','litang','xian','lundon']delplace[0]#输出['chengdu','litang','xian','lundon']还可以删......
  • python推导式
    python推导式推导式是用一行式子来完成循环操作的语句,一般与for循环结合来使用。列表推导式公式[exprforvalueincollection[ifcondition]]例子对循环内元素......
  • python浅拷贝和深拷贝
    python浅拷贝和深拷贝python中对对象直接赋值其实只是将其换了一个名字,想要对对象进行真正的复制要通过别的方法。浅拷贝浅拷贝利用copy()函数就可以实现,它会产生新的对......
  • Python_numpy-基础以及进一步了解
    pythontype()len()?向量化编程-广播机制向量化-一次处理一个数字转换为一次处理一批数据,尽可能的少使用for循环,使用arrray为基本元素进行操作使用numpy的函数......
  • python flask 启动时报错如何解决ModuleNotFoundError: No module named 'flask._comp
    今天对flask项目的数据库脚本迁移做了些更改,发现项目启动时一直在报错   这是因为我使用的是高版本的flask和flask_migrate,flask_script中的一些模块在高版本中已......