将多个迭代器链接在一起

使用 itertools.chain 创建一个生成器,它将按顺序从多个生成器生成值。

from itertools import chain
a = (x for x in ['1', '2', '3', '4'])
b = (x for x in ['x', 'y', 'z'])
' '.join(chain(a, b))

结果是:

'1 2 3 4 x y z'

作为替代构造函数,你可以使用 classmethod chain.from_iterable,它将单个参数作为可迭代的迭代。要获得与上面相同的结果:

' '.join(chain.from_iterable([a,b])

虽然 chain 可以采用任意数量的参数,但 chain.from_iterable 是链接无数个迭代的唯一方法。