Boucle avec des conditions en python
Considérons le code suivant dans C:
for(int i=0; i<10 && some_condition; ++i){
do_something();
}
Je voudrais écrire quelque chose de similaire en Python. La meilleure version à laquelle je pense est:
i = 0
while some_condition and i<10:
do_something()
i+=1
Franchement, je n'aime pas while
boucles d'imiter for
boucles. Cela est dû au risque d'oublier d'incrémenter la variable compteur. Une autre option, qui addressess ce risque est:
for i in range(10):
if not some_condition: break
do_something()
Importantes précisions
some_condition
n'est pas destiné à être calculés au cours de la boucle, mais plutôt de spécifier si le début de la boucle, en premier lieu,- Je fais référence à Python2.6
Style préféré? Est-il un meilleur langage pour faire cela?
source d'informationauteur Boris Gorelik
Vous devez vous connecter pour publier un commentaire.
En général, le "
range
+break
" le style est préféré - mais en Python 2.x, utilisezxrange
au lieu derange
pour l'itération (ce qui crée les valeurs à la demande au lieu de faire une liste de nombres).Mais il toujours en fonction. Ce qui est spécial au sujet de la numéro 10 dans ce contexte? Qu'est-ce exactement
some_condition
? Etc.Réponse de mise à jour:
Il sonne comme si
some_condition
est un "invariant de boucle", c'est à dire ne changera pas au cours de la boucle. Dans ce cas, nous devrions d'abord tester:Cela pourrait ne pas être liés, mais il y a ce que j'ai l'habitude de faire... Si
some_condition
est assez simple, le mettre dans une fonction etfilter
éléments que vous itérer sur:Vous pouvez utiliser cette approche lorsque vous parcourez quelques liste d'éléments.
De nouveau, peut-être pas votre cas, vous devez choisir la méthode de filtrage des éléments en fonction de votre problème.
for
boucles avec une constante de limite supérieure sont un peu rare en Python. Si vous êtes une itération sursomearray
vous pourriez faire:ou, mieux: