嵌套 python 个生成器(一个在另一个里面)

nesting python generators (one inside another)

我有两个函数(生成器)。

def a():
  yield 1
  yield 2


def b():
  yield 'A'
  yield 'B'
  yield a()

现在我想遍历 b() 并期望它应该输出 A B 1 2。但不是。它给了这个。

In [11]: for i in b():
   ....:     print i
   ....:     
A
B
<generator object a at 0x10fc3ddc0>

如何获得所需的输出?

在python3.3+上,您可以使用yield from:

def b():
    yield 'A'
    yield 'B'
    yield from a()

在 python3.3 之前的版本中,您需要在循环中显式生成值:

def b():
    yield 'A'
    yield 'B'
    for item in a():
        yield item

在Python 3. 你可以使用yield from

def a():
  yield 1
  yield 2


def b():
  yield 'A'
  yield 'B'
  yield from a()