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]