python算法设计源码:https://github.com/MakerChen66/Python3Algorithm
版权声明:原创不易,本文禁止抄袭、转载,侵权必究!
一、后缀表达式
虽然人们主要使用代数表达式中的中缀表达式记法,但是后缀表达式(也叫逆波兰表达式)更容易在算法上进行解析。
中缀表达式:二元运算符总是置于与之相关的两个运算对象之间,比如 5 + 2 ,9 * 4
后缀表达式:二元运算符置于其运算对象之后,比如 5 2 + ,9 4 *
例如,下面的表达式是等价的,第一个是中缀表达式,第二个是后缀表达式。
2 * (1 + 3) = 2 1 3 + *
当你实现你的第一个表达式解析器时,后缀和前缀表示法是最好的方法。对应到栈就是:入栈(append()),出栈(pop())…
Python算法实现:
math = {
'+': float.__add__,
'-': float.__sub__,
'*': float.__mul__,
'/': float.__truediv__,
'^': float.__pow__,
}
def postfix(expression):
stack = []
for x in expression.split():
if x in math:
x = math[x](stack.pop(-2), stack.pop(-1))
else:
x = float(x)
stack.append(x)
print(stack.pop())
postfix('1 2 + 4 3 - + 10 5 / *') # 相当于计算 ((1+2)+(4-3))*(10/5)
注意:stack.append()表示入栈,stack.pop()表示出栈,split()表示分割
输出结果:
如图所示,运算结果是8,结果正确
二、源码下载
python算法设计源码下载:
三、作者Info
作者:小鸿的摸鱼日常,Goal:让编程更有趣!
原创微信公众号:『小鸿星空科技』,专注于算法、爬虫,网站,游戏开发,数据分析、自然语言处理,AI等,期待你的关注,让我们一起成长、一起Coding!
版权说明:本文禁止抄袭、转载 ,侵权必究!