Loops with for

The for loop allows you to repeat one or more instructions. To write a for loop you need two things: First a sequence-like object(e.g. a list, a string, a dictionary or the output of a function producing sequences). Second, a variable that takes different values as the loop iterates over the sequence. The variable is easier, because it doesn’t matter what name you give it.

Things you can iterate over with for loops:

  • strings (character by character)

  • lists

  • dictionaries

  • files (line by line)

  • iterable functions (range, sorted, reversed)

Loops with for are useful whenever you want to repeat instructions a known number of times, or when you wnat to do something for all elements of a sequence. Below you find some examples.

Loops executing a given number of times

With the range() function, you can set the number of iterations easily:

for i in range(7):
    print(i)

or using an interval:

for i in range(10, 17):
    print(i)

or backwards:

for i in range(17, 10, -1):
    print(i)

Loops over a string

With a string as the sequence, you obtain single characters in each iteration.

for char in 'ABCD':
    print(char)

Loops over a list

A list iterates simply once through each element:

for elem in [1, 22, 333, 4444, 55555]:
    print(elem)

Loops over a dictionary

With a dictionary, the for loop iterates over the keys. Note that the dictionary is inherently unordered. Theoretically, you could get the keys in a different order each time.

pairs = {'Alice': 'Bob', 'Ada': 'Charlie', 'Visual': 'Basic'}
for key in pairs:
    print(key)
    print(pairs[key])

Looping over two lists simultaneously

Sometimes, you want to look up corresponding items from two lists. A straightforward solution is to loop over an index:

names = ['Alice', 'Bob', 'Charlie', 'Delia']
jobs = ['admin', 'builder', 'cook', 'developer']

for i in range(4):
    print(names[i] + ' works as a ' + jobs[i])

However, the pythonic solution would be to use zip:

for name, job in zip(names, jobs):
    print(name + ' works as a ' + job)

Indented block

All indented commands after the colon are executed within a for loop. The first unindented command is executed after the loop finishes.

for i in range(5):
    print('inside')
    print('also inside')
print('outside')