相关疑难解决方法(0)

广度优先版本的itertools.chain()

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

python python-itertools

1
推荐指数
1
解决办法
177
查看次数

标签 统计

python ×1

python-itertools ×1