toi*_*ing 4 python yield generator python-3.x yield-from
我们如何从另一个子生成器产生,但要进行转换/处理?
例如:在下面的代码中, main_gen 在使用 f(x) 转换后产生 x
def f(x):
return 2*x
def main_gen():
for x in sub_gen():
yield f(x)
Run Code Online (Sandbox Code Playgroud)
这可以用yield from替换吗?如果可以,如何替换?
def main_gen():
yield from ***
Run Code Online (Sandbox Code Playgroud)
你可以这样做:
def main_gen():
yield from map(f, sub_gen())
Run Code Online (Sandbox Code Playgroud)
但是,为什么不:
def main_gen():
return map(f, sub_gen())
Run Code Online (Sandbox Code Playgroud)
无论如何,这是一个懒惰的迭代器。