196 votes

façon pythonique de faire quelque chose N fois

Chaque jour, j'aime python de plus en plus.

Aujourd'hui, j'étais à écrire du code comme:

for i in xrange(N):
    do_something()

J'ai dû faire quelque chose de N fois. Mais à chaque fois ne dépend pas de la valeur de i (variable d'index). J'ai réalisé que j'étais en train de créer une variable, je n'ai jamais utilisé (i), et j'ai pensé "Il y a sûrement une plus pythonic façon de le faire sans la nécessité de l'inutile variable d'index."

Alors... la question est: savez-vous comment cette simple tâche dans un plus (pythonic) belle façon?

131voto

Alex Martelli Points 330805

Une approche légèrement plus rapide que la boucle sur xrange(N) est:

 import itertools

for _ in itertools.repeat(None, N):
    do_something()
 

69voto

GreenMatt Points 6301

Utilisez la variable _, comme je l'ai appris en posant cette question

56voto

Je viens d'utiliser for _ in range(n) , c'est droit au but. Il va générer la liste complète des nombres énormes dans Python 2, mais si vous utilisez Python 3, ce n'est pas un problème.

10voto

Khorkrak Points 2009

Le _ est la même chose que x, mais c'est juste un idiome python utilisé pour indiquer un identifiant que vous n'avez pas l'intention d'utiliser du tout. En python, ces identificateurs ne prennent pas de mémoire et n'allouent pas d'espace comme le font les variables dans d'autres langages. C'est facile d'oublier ça. Ce ne sont que des noms qui pointent vers des objets, dans ce cas un entier à chaque itération.

4voto

Cox Chen Points 71

Supposons que vous avez défini do_something comme une fonction et que vous souhaitez l'exécuter N fois. Peut-être que vous pouvez essayer ce qui suit:

 todos = [do_something] * N  
for doit in todos:  
    doit()
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X