Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Alternating between iterators in Python [duplicate]

Tags:

People also ask

Can iterators go backwards?

C++ Iterators Reverse IteratorsA reverse iterator is made from a bidirectional, or random access iterator which it keeps as a member which can be accessed through base() . To iterate backwards use rbegin() and rend() as the iterators for the end of the collection, and the start of the collection respectively.

What does ITER () do in Python?

python iter() method returns the iterator object, it is used to convert an iterable to the iterator. Parameters : obj : Object which has to be converted to iterable ( usually an iterator ). sentinel : value used to represent end of sequence.

Are iterators and generators the same?

Iterators are objects which use the next() method to get the following values of a sequence. Generators are functions that produce or yield a sequence of values using the yield keyword.

Are iterators faster than for loops Python?

Iterators will be faster and have better memory efficiency. Just think of an example of range(1000) vs xrange(1000) .


What is the most efficient way to alternate taking values from different iterators in Python, so that, for example, alternate(xrange(1, 7, 2), xrange(2, 8, 2)) would yield 1, 2, 3, 4, 5, 6. I know one way to implement it would be:

def alternate(*iters):
    while True:
        for i in iters:
            try:
                yield i.next()
            except StopIteration:
                pass

But is there a more efficient or cleaner way? (Or, better yet, an itertools function I missed?)