J'utilise Python pour infiniment parcourir une liste, en répétant chaque élément de la liste un certain nombre de fois. Par exemple donné la liste:Comment parcourir une liste en répétant chaque élément en Python
l = [1, 2, 3, 4]
Je voudrais sortie chaque élément deux fois, puis répéter le cycle:
1, 1, 2, 2, 3, 3, 4, 4, 1, 1, 2, 2 ...
J'ai une idée de l'endroit où commencer:
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
Mais comment pourrais-je répéter chaque élément?
Modifier
Pour clarifier cela devrait itérer infiniment. J'ai aussi utilisé la répétition de l'élément deux fois comme l'exemple le plus court - Je voudrais vraiment répéter chaque élément n fois.
Mise à jour
Est-ce que votre solution me conduire à ce que je cherchais:
>>> 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
Merci pour les réponses rapides!
quand vous voulez arrêter? –