如果我这样说,我会看到all_items中的所有组合。但是,如果我不想存储所有组合并放入yield,则它不起作用。有什么想法吗?
all_items = []
def get_val(n,last):
if n < 5:
for k in range(-1,1+1,1):
get_val(n+1,last+[k])
else:
get_val(0,[])
all_items += [last]
答案 0 :(得分:3)
如果我理解正确,这应该有效:
def get_val(n, last):
if n < 5:
for k in range(-1, 1+1, 1):
yield from get_val(n+1, last+[k])
else:
yield last
get_val(0, [])
适用于Python 3.3+,您可以将yield from get_val(n+1, last+[k])
替换为:
for thing in get_val(n+1, last+[k]):
yield thing