For loops (novice)

for-loop, increment, loops, python

Solution

As you say, a `for` loop iterates through the elements of a list. The list can contain anything you like, so you can construct a list beforehand that contains each step.

A `for` loop can also iterate over a "generator", which is a small piece of code instead of an actual list. In Python, `range()` is actually a generator (in Python 2.x though, `range()` returned a list while `xrange()` was the generator).

For example:

def doubler(x):
    while True:
        yield x
        x *= 2

for i in doubler(1):
    print i

The above `for` loop will print

1
2
4
8

and so on, until you press Ctrl+C.

Problem

I recently started learning Python, and the concept of for loops is still a little confusing for me. I understand that it generally follows the format `for x in y`, where `y` is just some list. The for-each loop `for (int n: someArray)` becomes `for n in someArray`, And the for loop `for (i = 0; i < 9; i-=2)` can be represented by `for i in range(0, 9, -2)` Suppose instead of a constant increment, I wanted `i*=2`, or even `i*=i`. Is this possible, or would I have to use a while loop instead?

Original source