Я использую Python для бесконечно итерации по списку, повторяя каждый элемент в списке несколько раз. Например, учитывая список:
l = [1, 2, 3, 4]
Я хотел бы вывести каждый элемент два раза, а затем повторить цикл:
1, 1, 2, 2, 3, 3, 4, 4, 1, 1, 2, 2 ...
У меня есть представление, с чего начать:
def cycle(iterable):
if not hasattr(cycle, 'state'):
cycle.state = itertools.cycle(iterable)
return cycle.next()
>>> l = [1, 2, 3, 4]
>>> cycle(l)
1
>>> cycle(l)
2
>>> cycle(l)
3
>>> cycle(l)
4
>>> cycle(l)
1
Но как бы я повторил каждый элемент?
Редактировать
Для пояснения этого следует повторяться бесконечно. Также я использовал повторение элемента дважды в качестве самого короткого примера -
Я бы очень хотел повторить каждый элемент n раз .
Обновление
Приведет ли ваше решение к тому, что я искал:
>>> import itertools
>>> def ncycle(iterable, n):
... for item in itertools.cycle(iterable):
... for i in range(n):
... yield item
>>> a = ncycle([1,2], 2)
>>> a.next()
1
>>> a.next()
1
>>> a.next()
2
>>> a.next()
2
>>> a.next()
1
>>> a.next()
1
>>> a.next()
2
>>> a.next()
2
Спасибо за быстрые ответы!