Allan Lavell
Allan Lavell

Reputation: 315

Python While Loop Condition Evaluation

Say I have the following loop:

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

Will the len(i) condition being evaluated in the while loop be updated when something is appended to l?

Upvotes: 2

Views: 5347

Answers (2)

Ben Blank
Ben Blank

Reputation: 56572

Your code will work, but using a loop counter is often not considered very "pythonic". Using for works just as well and eliminates the counter:

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

If you need to know how "far" into the list you are, you can use 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

Upvotes: 3

Dario
Dario

Reputation: 49208

Yes it will.

Upvotes: 14

Related Questions