2009-05-14 5 views
1

sagen, ich habe die folgende Schleife:Python While-Schleife Zustandsbewertung

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

Wird die len(i) Bedingung in der while-Schleife aktualisiert werden ausgewertet wird, wenn etwas l angehängt wird?

+3

Wenn das Ihr Code ist, es Ich werde nie aus einem anderen Grund austreten: am Anfang der Schleife, ich ojrac

+0

@orjac ich denke, er hat das "i" -Inkrement für den Zweck der Brevety – albertein

+0

ja weggelassen ... ich weiß, dass Sie i erhöhen müssen. –

Antwort

3

Ihr Code funktioniert, aber die Verwendung eines Loop Counters wird oft nicht als sehr "pythonisch" angesehen. Mit for funktioniert genauso gut und beseitigt die Zähler:

>>> 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 

Wenn Sie wissen müssen, wie „weit“ in die Liste Sie sind, Sie enumerate verwenden können:

>>> 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