Breadth-first version of itertools.chain()

后端 未结 2 1463
死守一世寂寞
死守一世寂寞 2021-01-23 23:58

In itertools there\'s chain, which combines multiple generators in a single one, and in essence does a depth-first iteration over them, i.e., cha

2条回答
  •  Happy的楠姐
    2021-01-24 00:28

    Not sure if you'd still consider this too "verbose"...

    def chain_bfs2(*generators):
        generators = map(iter, generators)
        while generators:
            for i, generator in enumerate(generators):
                try:
                    yield generator.next()
                except StopIteration:
                    del generators[i]
    
    print list(chain_bfs2('AB', '123'))  # ['A', '1', 'B', '2', '3']
    

提交回复
热议问题