Round Robin method of mixing of two lists in python

python, python-2.7

Solution

You could find a series of iteration recipes here: http://docs.python.org/2.7/library/itertools.html#recipes

from itertools import islice, cycle


def roundrobin(*iterables):
    "roundrobin('ABC', 'D', 'EF') --> A D E B F C"
    # Recipe credited to George Sakkis
    pending = len(iterables)
    nexts = cycle(iter(it).next for it in iterables)
    while pending:
        try:
            for next in nexts:
                yield next()
        except StopIteration:
            pending -= 1
            nexts = cycle(islice(nexts, pending))


print list(roundrobin(range(5), "hello"))

EDIT: Python 3

https://docs.python.org/3/library/itertools.html#itertools-recipes

def roundrobin(*iterables):
    "roundrobin('ABC', 'D', 'EF') --> A D E B F C"
    # Recipe credited to George Sakkis
    num_active = len(iterables)
    nexts = cycle(iter(it).__next__ for it in iterables)
    while num_active:
        try:
            for next in nexts:
                yield next()
        except StopIteration:
            num_active -= 1
            nexts = cycle(islice(nexts, num_active))

print(list(roundrobin(range(5), "hello")))

Problem

If input is ``` round_robin(range(5), "hello") ``` I need output as ``` [0, 'h', 1, 'e', 2, 'l', 3, 'l', 4, 'o'] ``` I tried ``` def round_robin(*seqs): list1=[] length=len(seqs) list1= cycle(iter(items).__name__ for items in seqs) while length: try: for x in list1: yield x except StopIteration: length -= 1 pass ``` but it gives error as ``` AttributeError: 'listiterator' object has no attribute '__name__' ``` How to modify the code to get the desired output?

Original source