在itertools那里chain,它将多个生成器组合在一起,实质上是对它们进行深度优先迭代,即chain.from_iterable(['ABC', '123'])产生A,B,C,1,2,3.但是,没有广度优先版本,或者是我错过了什么?当然izip_longest,但是对于大量的发生器来说,这感觉很尴尬,因为元组会非常长并且可能非常稀疏.
我想出了以下内容:
def chain_bfs(*generators):
generators = list(generators)
while generators:
g = generators.pop(0)
try:
yield g.next()
except StopIteration:
pass
else:
generators.append(g)
Run Code Online (Sandbox Code Playgroud)
对我来说感觉有点冗长,是否有更多的Pythonic方法我错过了?这个功能是否适合加入itertools?