【发布时间】:2011-09-09 14:26:32
【问题描述】:
我有一个 Python 生成器,它可以调用自身来获取更多要生成的元素。它看起来像这样:
def gen(list):
# ...
if list:
for x in gen(list[1:]):
yield x
我的问题是关于最后两行:有没有更简洁的方式来表达这一点?我希望有这样的东西(理解这不是有效的 Python):
def gen(list):
# ...
if list:
yield each in gen(list[1:])
【问题讨论】:
-
我不太明白这应该做什么,我最初认为这只是将列表转换为生成器的一种天真的方式,但我错了。你能启发我吗?
-
如果我错了,请纠正我,但该代码看起来总是会返回一个空列表。我认为评论中必须有其他收益?
-
@Dunes: 是的,评论中还有其他收益。
-
@Davy8:它不是包装器或转换器,它是我编写的自定义生成器。它接受一个事物列表并生成另一个列表,该列表可能包含一些相同的事物,也可能不包含。一种“过滤器”。
标签: python recursion generator yield