Changing iteration variable inside for loop in Python

python

Solution

Python has a few nice things happening in the background of for loops. For example:

for i in range(10):

will constantly set `i` to be the next element in the range `0-10` no matter what.

If you want to do the equivalent in python you would do:

i = 0
while i < 10:
    print(i)
    if i == 2:
        i = 4
    else:      # these line are
        i += 1 # the correct way
    i += 1 # note that this is wrong if you want 1,2,4,5,6,7,8,9

If you are trying to convert it to `C` then you have to remember that the `i++` in the `for` loop will always add to the `i`.

Problem

I am trying to do something as simple as changing the varible in which I am iterating over (i) but I am getting different behaviours in both Python and C. In Python, ``` for i in range(10): print i, if i == 2: i = 4; ``` I get `0 1 2 3 4 5 6 7 8 9`, but the equivalent in C: ``` int i; for (i = 0; i < 10; i++) { printf("%d", i); if (i == 2) i = 4; } ``` I get `01256789` (note that numbers 3 and 4 don't appear, as expected). What's happening here?

Original source

Related problems