Considérez le code suivant en C:
for i in range(10): if not some_condition: break do_something()
3 Réponses :
En général, la plage " mais cela dépend toujours. Qu'est-ce qui est spécial sur le numéro 10 dans ce contexte? Quel est exactement réponse à la mise à jour: p> Il sonne comme si code> +
breakfe code>" est préférable - mais dans Python 2.x, utilisez
xrange code> au lieu de
plage code> pour l'itération (cela crée les valeurs à la demande au lieu de faire une liste de chiffres).
quelque_condition code>? Etc. P>
Certain_condition code> est une "boucle invariante", c'est-à-dire ne changera pas pendant la boucle. Dans ce cas, nous devrions simplement le tester: P>
if some_condition:
for i in xrange(10):
do_something()
10 et la gamme ne sont que des exemples que cela aurait pu être pour i dans mon_array code>. Comme clarifié dans la question,
quelque_condition code> contrôle si le programme doit effectuer la boucle ou la sauter du tout
Votre version est simple et fonctionne. Je voulais juste épargner une indentation supplémentaire. Merci
pour code> Les boucles avec une limite supérieure constante sont un peu rares dans Python. Si vous êtes itération sur
SOMARRAY code>, vous pouvez faire:
for i, item in enumerate(somearray):
if not some_condition:
break
do_sth_with(i, item)
Ceci pourrait ne pas être associé, mais il y a ce que j'ai l'habitude de faire ... Si Vous pouvez également utiliser cette approche également lorsque vous ithétiez sur une liste d'éléments. p> encore, cela pourrait ne pas être Votre cas, vous devez choisir la méthode de filtrage des éléments en fonction de votre problème. P> p> Certain_condition code> est assez simple, mettez-le dans une fonction et
filtre code> éléments itérer sur:
Ou, la rendre encore plus courte et moins lisible: pour i dans le filtre (Lambda x: true, plage (10)): Do_Qomething () code>
Je pense que c'est une question de préférence personnelle.
Quelle version de Python?
Je pense que Python devrait avoir une construction comme
do fois: code>, pour vous permettre de préciser que vous n'utilisez pas réellement le compteur de boucle.
Karl:
pour _ dans la plage (10) code> semble être un moyen courant de noter cela, mais c'est bien sûr, c'est une idée horrible si vous utilisez GetText.