85 votes

Première itération de la boucle "Pour"

Salutations pyc-sires et py-ladies, Je voudrais demander s'il existe une élégante façon pythonique d'exécuter une certaine fonction sur la première itération boucle. La seule possibilité à qui je peux penser est :

79voto

Daniel Bruce Points 3413

Quelque chose comme cela devrait fonctionner.

for i, member in enumerate(something.get()):
    if i == 0:
         # Do thing
    # Code for everything

Cependant, je vous recommande fortement penser au sujet de votre code pour voir si vous avez vraiment à faire de cette façon, parce que c'est une sorte de "sale". Mieux serait de récupérer l'élément qui a besoin d'une manipulation spéciale à l'avant, puis le faire régulièrement de manutention pour tous les autres dans la boucle.

La seule raison pour laquelle j'ai pu voir pour ne pas le faire de cette façon est pour une grande liste, vous seriez obtenir à partir d'un générateur d'expression (qui vous ne voudriez pas aller chercher jusqu'à l'avant parce qu'il ne rentrait pas dans la mémoire), ou de situations similaires.

49voto

S.Lott Points 207588

Vous avez plusieurs choix pour le modèle de conception Head-Tail.

Ou cette

Les gens pleurnichent que ce n'est en quelque sorte pas "DRY" parce que le "foo redondant (membre)" code. C'est une affirmation ridicule. Si cela était vrai, alors toutes les fonctions ne pouvaient être utilisées qu'une seule fois. Quel est l'intérêt de définir une fonction si vous ne pouvez avoir qu'une seule référence ?

14voto

dummy Points 1558

Que diriez-vous:

ou peut-être:

Documentation de la méthode d'index.

6voto

fortran Points 26495

Je pense que c'est assez élégant, mais peut-être trop compliqué pour ce qu'il fait ...

3voto

Eli Bendersky Points 82298

Si something.get() itère quelque chose, vous pouvez le faire aussi comme suit:

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