生成器可以递归吗?

2023-11-29

我天真地尝试创建一个递归生成器。没用。这就是我所做的:

def recursive_generator(lis):
    yield lis[0]
    recursive_generator(lis[1:])

for k in recursive_generator([6,3,9,1]):
    print(k)

我得到的只是第一个项目6.

有没有办法让这样的代码工作?本质上是转移yield在递归方案中命令到上一级?


尝试这个:

def recursive_generator(lis):
    yield lis[0]
    yield from recursive_generator(lis[1:])

for k in recursive_generator([6,3,9,1]):
    print(k)

我应该指出,由于您的函数中存在错误,因此这不起作用。它可能应该包括一项检查lis不为空,如下图:

def recursive_generator(lis):
    if lis:
        yield lis[0]
        yield from recursive_generator(lis[1:])

如果您使用的是 Python 2.7 并且没有yield from, 检查一下这个问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

生成器可以递归吗? 的相关文章

随机推荐