This question already has answers here:
How do I merge two python iterators?

(13个回答)


5年前关闭。




在Python中交替从不同迭代器获取值的最有效方法是什么,例如,alternate(xrange(1, 7, 2), xrange(2, 8, 2))将产生1、2、3、4、5、6。我知道一种实现它的方法是:
def alternate(*iters):
    while True:
        for i in iters:
            try:
                yield i.next()
            except StopIteration:
                pass

但是,有没有更有效或更清洁的方法? (或者更好的是,我错过了一个itertools函数?)

最佳答案

zipper 呢?您也可以尝试从itertools下载izip

>>> zip(xrange(1, 7, 2),xrange(2, 8 , 2))
[(1, 2), (3, 4), (5, 6)]

如果这不是您想要的,请在问题中提供更多示例。

10-08 13:09