3.3. for LoopsΒΆ

for loops provide a very convenient way for iterating over the individual elements in a list. For example:

>>> a = [1,2,3,4,5,6,7,8,9]
>>> for i in a:
...     print i,
...
1 2 3 4 5 6 7 8 9

The dots above signify a continuation from the previous line. for loops require indentation, which is why we use a tab space immediately after the line specifying the for loop. It is customary to leave an empty line after all commands of the loop have been specified, as this notifies Python about the particular block that lies inside the loop. Needless to say, if any of these conventions are not followed, then Python will report a syntax error. Note the comma after the print statement. Had we omitted it, all the numbers would have been printed on a separate line. As noted in the previous section, multiplying a list by a constant does not have the effect of scaling all the individual elements, but this can be easily achieved using for loops, as shown below:

>>> a = [1,2,3,4,5,6,7,8,9]
>>> b = [2*i for i in a]
>>> b
[2, 4, 6, 8, 10, 12, 14, 16, 18]

Python also provides a range function for conveniently generating a list of consecutive numbers. If only one parameter is provided, it is interpreted as the end of the list. In this case, the output of range are all numbers between 0 and end-1 (endpoints inclusive). If two arguments are provided, the first is interpreted as the start of the list, while the second is interpreted as the end of the list. In this case, the output of range are all numbers between start and end-1. Using the range function, the for loop above can be reimplemented as shown below:

>>> a = range(10)
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a = range(2,10)
>>> a
[2, 3, 4, 5, 6, 7, 8, 9]
>>> for i in range(1,10):
...     print i,
...
1 2 3 4 5 6 7 8 9

There are several built-in functions in Python for computing simple statistics on a list of numbers. Note that, unlike basic data types such as int, float, or string, the assignment operator (=) gives a reference for lists, i.e., both variables refer to the same list. So any modifications to either variable is reflected in the original list as well. For example:

>>> a = range(1,10)
>>> min(a)
1
>>> max(a)
9
>>> sum(a)
45
>>> a
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> b = a
>>> b.append(10)
>>> a
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]