我在python中有一个看起来像这样的列表:
list = [5, "-", 4, "*", 8]
我想计算列表中的数学问题,所以:
anwser = 5 - 4 * 8
因此变量“ anwser”为-27。
答案 0 :(得分:2)
这就是您称为中缀符号(https://en.wikipedia.org/wiki/Infix_notation)
您可以使用堆栈进行评估。我在这里找到了要点(https://gist.github.com/nava45/6333409#file-infix-expression-evaluation)
答案 1 :(得分:2)
以运算优先级评估方程式需要解析器。
幸运的是,无需使用解析工具即可相当简单地为基本算术(即加法和乘法)编写解析器。
import operator
ops = {
'-': operator.sub,
'+': operator.add,
'*': operator.mul,
'/': operator.truediv
}
def parse_mult(equation):
equation = iter(equation)
value = next(equation)
for token in equation:
if token == '*' or token == '/':
op = ops[token]
value = op(value, next(equation))
else:
yield value
yield token
value = next(equation)
yield value
def parse(equation):
equation = parse_mult(equation)
value = next(equation)
for token in equation:
op = ops[token]
value = op(value, next(equation))
return value
equation_list = [5, "-", 4, "*", 8]
print(parse(equation_list))
-27
如果您需要解析具有两个以上优先级的方程式,那么可能就不需要外部解析工具。
答案 2 :(得分:1)