收益率的简单递归?

时间:2016-02-05 16:03:56

标签: python

如果我这样说,我会看到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]

1 个答案:

答案 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