Python从另一个迭代中产生所有价值

示例

Python 3.x 3.3

yield from如果要从另一个可迭代对象中产生所有值,请使用:

def foob(x):
    yield from range(x * 2)
    yield from range(2)

list(foob(5))  # [0、1、2、3、4、5、6、7、8、9、0、1]

这也适用于发电机。

def fibto(n):
    a, b = 1, 1
    while True:
        if a >= n: break
        yield a
        a, b = b, a + b

def usefib():
    yield from fibto(10)
    yield from fibto(20)

list(usefib())  # [1、2、3、5、8、1、1、2、3、5、8、13]