Boston Python Workshop 8/Loops

From OpenHatch wiki


For loops

Use a for loop to do something to every element in a list.

>>> names = ["Jessica", "Adam", "Liz"]
>>> for name in names:
...     print(name)
...
Jessica
Adam
Liz
>>> names = ["Jessica", "Adam", "Liz"]
>>> for name in names:
...     print("Hello " + name)
...
Hello Jessica
Hello Adam
Hello Liz

if statements inside for loop

>>> for name in ["Alice", "Bob", "Cassie", "Deb", "Ellen"]:
...     if name[0] in "AEIOU":
...         print(name + " starts with a vowel.")
... 
Alice starts with a vowel.
Ellen starts with a vowel.

Building up a list

Sometimes you want to build up a new list based on information about each element in an existing list. To do this, initialize an empty list before the for loop, and append elements to the new list inside the for loop:

>>> vowel_names = []
>>> for name in ["Alice", "Bob", "Cassie", "Deb", "Ellen"]:
...     if name[0] in "AEIOU":
...         vowel_names.append(name)
... 
>>> print(vowel_names)
['Alice', 'Ellen']

Using a counter

Sometimes you want to keep track of the number of occurrences of something, or a running total, as you loop through a list. To do this, initialize a variable before the for loop that you update inside the for loop:

>>> prices = [1.5, 2.35, 5.99, 16.49]
>>> total = 0
>>> for price in prices:
...     total = total + price
... 
>>> total
26.33

for loops inside for loops

You can put for loops inside for loops. The indentation dictates which for loop a line is in.

>>> letters = ["a", "b", "c"]
>>> numbers = [1, 2, 3]
>>> for letter in letters:
...     for number in numbers:
...         print(letter * number)
...
a
aa
aaa
b
bb
bbb
c
cc
ccc

The order of the for loops matters. Compare the above example with this one:

>>> for number in numbers:
...     for letter in letters:
...         print(number * letter)
...
a
b
c
aa
bb
cc
aaa
bbb
ccc

Useful functions related to lists and for loops

sorting lists

Use .sort() to sort a list:

>>> names = ["Eliza", "Joe", "Henry", "Harriet", "Wanda", "Pat"]
>>> names.sort()
>>> names
['Eliza', 'Harriet', 'Henry', 'Joe', 'Pat', 'Wanda']

Getting the maximum and minimum values from a list

>>> numbers = [0, 3, 10, -1]
>>> max(numbers)
10
>>> min(numbers)
-1

Generating a list of numbers easily with range()

The range() function returns a list of numbers. This is handy for when you want to generate a list of numbers on the fly instead of creating the list yourself.

>>> range(5)
[0, 1, 2, 3, 4]

Use range when you want to loop over a bunch of numbers in a list:

>>> numbers = range(5)
>>> for number in numbers:
...     print(number * number)
...
0
1
4
9
16

We could rewrite the above example like this:

>>> for number in range(5):
...     print(number * number)
...
0
1
4
9
16

Get user input with raw_input()

>>> for i in range(100):
...     input = raw_input("Please type something> ")
...     if input == "Quit":
...         print("Goodbye!")
...         break
...     else:
...         print("You said: " + input)
... 
Please type something> Hello
You said: Hello
Please type something> How are you?
You said: How are you?
Please type something> Quit
Goodbye!
>>> 

« Back to the Saturday lecture page