Why doesn't modifying the iteration variable affect subsequent iterations?

for-loop, python

Solution

The for loop iterates over all the numbers in `range(10)`, that is, `[0,1,2,3,4,5,6,7,8,9]`. That you change the current value of `i` has no effect on the next value in the range.

You can get the desired behavior with a while loop.

i = 0
while i < 10:
    # do stuff and manipulate `i` as much as you like       
    if i==5:
        i+=3

    print i

    # don't forget to increment `i` manually
    i += 1

Problem

Here's the Python code I'm having problems with: ``` for i in range (0,10): if i==5: i+=3 print i ``` I expected the output to be: ``` 0 1 2 3 4 8 9 ``` However, the interpreter spits out: ``` 0 1 2 3 4 8 6 7 8 9 ``` I know that a `for` loop creates a new scope for a variable in C, but have no idea about Python. Why does the value of `i` not change in the `for` loop in Python, and what's the remedy to it to get the expected output? See How to modify list entries during for loop? for how to modify the original sequence. In 3.x, of course, `range` creates an immutable object, so it would still not work.

Original source

Related problems