4

我们如何从另一个子生成器中产生,但要进行转换/处理?

例如:在下面的代码中,main_gen 使用 f(x) 转换后产生 x

def f(x):
   return 2*x

def main_gen():
   for x in sub_gen():
      yield f(x)

这可以用yield from代替吗?如果可以,怎么做?

def main_gen():
     yield from ***
4

2 回答 2

6

你可以这样做:

def main_gen():
    yield from map(f, sub_gen())
   

但是,为什么不呢:

def main_gen():
    return map(f, sub_gen())

无论如何,这是一个惰性迭代器。

于 2020-10-29T20:15:27.710 回答
3

您始终可以将其转换为生成器表达式,yield from并且:

def main_gen():
    yield from (f(x) for x in sub_gen())
于 2020-10-29T20:20:56.510 回答