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

时间:2015-03-11 16:13:14

标签: python generator yield

我有两个功能(发电机)。

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>

如何获得所需的输出?

2 个答案:

答案 0 :(得分:5)

在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

答案 1 :(得分:1)

在Python 3中。您可以使用yield from

def a():
  yield 1
  yield 2


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