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