有时候,当将递归函数改写成生成器时,我会感到缺少
转化为
return
的简洁性。"""
Returns a list of all length n strings that can be made out of a's and/or b's.
"""
def ab_star(n):
if n == 0:
return [""]
results = []
for s in ab_star(n - 1):
results.append("a" + s)
results.append("b" + s)
return results
转化为
"""
Generator for all length n strings that can be made out of a's and/or b's.
"""
def ab_star(n):
if n == 0:
yield ""
else:
for s in ab_star(n - 1):
yield "a" + s
yield "b" + s
让我感到困扰的是那个 else
。我希望有一种方法能够说:“yield
,这就是它,退出函数”。是否有一种方法呢?
yield
后不加一个return
呢? - anon582847382