我真的不明白yield声明在这种情况下是如何运作的.问题是,给定一个没有括号的表达式,编写一个函数来生成所有可能的完全括号(FP)表达式.比如,输入'1+2+3+4'应该生成5个FP表达式:
我的代码如下.
OPS = ('+', '-', '*', '/')
def f(expr):
"""
Generates FP exprs
Recursive formula: f(expr1[op]expr2) = (f(expr1) [op] f(expr2))
"""
if expr.isdigit(): yield expr
# return [expr]
# ret = []
first = ''
i = 0
while i < len(expr):
if expr[i] not in OPS:
first += expr[i]
i += 1
else:
op …Run Code Online (Sandbox Code Playgroud)