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?