2009-05-14 6 views
1

Dire que j'ai la boucle suivante:Python While Condition d'évaluation

i = 0 
l = [0, 1, 2, 3] 
while i < len(l): 
    if something_happens: 
     l.append(something) 
    i += 1 

quand quelque chose est ajouté à l Est-ce que la condition len(i) en cours d'évaluation dans la boucle while être mis à jour?

+3

Si tel est votre code, il Je ne sortirai jamais pour une raison différente: au début de la boucle, je ojrac

+0

@orjac je pense qu'il a omis le "i" incrément à des fins de brièveté – albertein

+0

oui ... je sais que vous devez incrémenter i. –

Répondre

3

Votre code fonctionnera, mais l'utilisation d'un compteur de boucle n'est souvent pas très "pythonique". L'utilisation for fonctionne aussi bien et élimine le compteur:

>>> foo = [0, 1, 2] 
>>> for bar in foo: 
    if bar % 2: # append to foo for every odd number 
     foo.append(len(foo)) 
    print bar 

0 
1 
2 
3 
4 

Si vous avez besoin de savoir comment « bien » dans la liste que vous êtes, vous pouvez utiliser enumerate:

>>> foo = ["wibble", "wobble", "wubble"] 
>>> for i, bar in enumerate(foo): 
    if i % 2: # append to foo for every odd number 
     foo.append("appended") 
    print bar 

wibble 
wobble 
wubble 
appended 
appended 
Questions connexes