Loops¶
while
loop¶
The while
loop is executed as long as the condition (here: x > y
) is
true:
1>>> x, y = 6, 3
2>>> while x > y:
3... x -= 1
4... if x == 4:
5... break
6... print(x)
7...
85
- Line 1
This is a shorthand notation where
x
is given the value6
andy
is given the value3
.- Lines 2–10
This is the
while
loop with the statementx > y
, which is true as long asx
is greater thany
.- Line 3
x
is reduced by1
.- Line 4
if
condition wherex
is to be exactly4
.- Line 5
break
ends the loop.- Lines 8 and 9
outputs the results of the
while
loop before execution was interrupted withbreak
.
1>>> x, y = 6, 3
2>>> while x > y:
3... x -= 1
4... if x == 4:
5... continue
6... print(x)
7...
85
93
- Line 5
continue
terminates the current iteration of the loop.
for
loop¶
The for
loop is simple but powerful because it can iterate over any iterable
type, such as a list or a tuple. Unlike many other languages, the for
loop
in Python iterates over every element in a sequence for example a list or a tuple), which makes it more like a foreach loop. The
following loop uses the Modulo operator %
as a condition
for the first occurrence of an integer divisible by 5
:
1>>> items = [1, "fünf", 5.0, 10, 11, 15]
2>>> d = 5
3>>> for i in items:
4... if not isinstance(i, int):
5... continue
6... if not i % d:
7... print(f"First integer found that is divisible by {d}: {i}")
8... break
9...
10First integer found that is divisible by 5: 10
x
is assigned each value in the list in turn. If x
is not an integer,
the remainder of this iteration is aborted by the continue
statement. The
flow control is continued with x
being set to the next entry in the list.
After the first matching integer is found, the loop is terminated with the
break
statement.
Loops with an index¶
You can also output the index in a for
loop, for example with
enumerate()
:
>>> data_types = ["Data types", "Numbers", "Lists"]
>>> for index, title in enumerate(data_types):
... print(index, title)
...
0 Data types
1 Numbers
2 Lists
List Comprehensions¶
A list is usually generated as follows:
>>> squares = []
>>> for i in range(8):
... squares.append(i**2)
...
>>> squares
[0, 1, 4, 9, 16, 25, 36, 49]
Instead of creating an empty list and inserting each element at the end, with list comprehensions you simply define the list and its content at the same time with just a single line of code:
>>> squares = [i**2 for i in range(8)]
>>> squares
[0, 1, 4, 9, 16, 25, 36, 49]
The general format for this is:
NEW_LIST = [EXPRESSION for MEMBER in ITERABLE]
Each list comprehension in Python contains three elements:
EXPRESSION
is a call to a method or another valid expression that returns a value. In the example above, the expression
i ** 2
is the square of the respective member value.MEMBER
is the object or the value in an
ITERABLE
. In the example above, the value isi
.ITERABLE
is a list, a set, a generator or another object that can return its elements individually. In the example above, the iterable is
range(8)
.
You can also use optional conditions with list comprehensions, which are usually appended to the end of the expression:
>>> squares = [i**2 for i in range(8) if i >= 4]
>>> squares
[16, 25, 36, 49]
Checks¶
Removes all negative numbers from the list
x = [ -2, -1, 0, 1, 2, 3]
.Which list comprehension would you use to achieve the same result?
How would you count the total number of negative numbers in the list
[-[1, 0, 1], [-1, 1, 3], [-2, 0, 2]]
?Creates a generator that only returns odd numbers from 1 to 10.
Tip
A number is odd if there is a remainder when it is divided by 2, in other words if
% 2
is true.Write a dict with the edge lengths and volumes of cubes.