将多个迭代器链接在一起
使用 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
是链接无数个迭代的唯一方法。