Estoy usando Python a infinitamente itere sobre una lista, repitiendo cada elemento en la lista varias veces. Por ejemplo, dada la lista:Cómo iterar sobre una lista repitiendo cada elemento en Python
l = [1, 2, 3, 4]
quisiera salida de cada elemento dos veces, y luego repetir el ciclo:
1, 1, 2, 2, 3, 3, 4, 4, 1, 1, 2, 2 ...
Tengo una idea de por dónde empezar:
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
Pero, ¿cómo iba a repetir cada elemento?
Editar
Para aclarar esto debe repetir hasta el infinito. También he usado repetir el elemento dos veces como el ejemplo más corto - Realmente me gustaría repetir cada elemento n veces.
actualización
¿Su solución me llevan a lo que estaba buscando:
>>> 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
Gracias por las respuestas rápidas!
Cuándo quiere que se detenga? –