Schleifen#

while-Schleife#

Die while-Schleife wird so lange ausgeführt, wie die Bedingung (hier: x > y) wahr ist:

1>>> x, y = 6, 3
2>>> while x > y:
3...     x -= 1
4...     if x == 4:
5...         break
6...     print(x)
7...
85
Zeile 1

Dies ist eine Kurzschreibweise, wobei x den Wert 6 und y den Wert 3 erhält.

Zeilen 2–10

Dies ist die while-Schleife mit der Anweisung x > y, die wahr ist, solange x größer als y ist.

Zeile 3

x wird um 1 reduziert

Zeile 4

if-Bedingung, bei der x exakt 4 sein soll.

Zeile 5

break beendet die Schleife.

Zeilen 8 und 9

gibt die Ergebnisse der while-Schleife aus bevor die Ausführung mit break unterbrochen wurde.

1>>> x, y = 6, 3
2>>> while x > y:
3...     x -= 1
4...     if x == 4:
5...         continue
6...     print(x)
7...
85
93
Zeile 5

continue bricht die aktuelle Iteration der Schleife ab.

for-Schleife#

Die for-Schleife ist einfach, aber mächtig, weil sie über einen beliebigen iterierbaren Typ, wie eine Liste oder ein Tupel, iterieren kann. Anders als in vielen anderen Sprachen iteriert die for-Schleife in Python über jedes Element in einer Sequenz (z.B. eine Liste oder ein Tupel), was sie eher zu einer foreach-Schleife macht. Die folgende Schleife verwendet den Modulo-Operator % als Bedingung für as erste Vorkommen einer ganzen Zahl, die durch 5 teilbar ist:

>>> items = [1, "fünf", 5.0, 10, 11, 15]
>>> d = 5
>>> for i in items:
...     if not isinstance(i, int):
...         continue
...     if not i % d:
...         print(f"Erste gefundene Ganzzahl, die durch {d} teilbar ist: {i}")
...         break
...
Erste gefundene Ganzzahl, die durch 5 teilbar ist: 10

x wird nacheinander jeder Wert in der Liste zugewiesen. Wenn x keine ganze Zahl ist, wird der Rest dieser Iteration durch die continue-Anweisung abgebrochen. Die Ablaufsteuerung wird fortgesetzt, wobei x auf den nächsten Eintrag in der Liste gesetzt wird. Nachdem die erste passende ganze Zahl gefunden wurde, wird die Schleife mit der break-Anweisung beendet.

Schleifen mit einem Index#

Ihr könnt in einer for-Schleife auch den Index ausgeben, z.B. mit 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#

Üblicherweise wird eine Liste folgendermaßen generiert:

>>> squares = []
>>> for i in range(8):
...     squares.append(i ** 2)
...
>>> squares
[0, 1, 4, 9, 16, 25, 36, 49]

Anstatt eine leere Liste zu erstellen und jedes Element am Ende einzufügen, definiert ihr mit List Comprehensions einfach die Liste und ihren Inhalt gleichzeitig mit nur einer einzigen Code-Zeile:

>>> squares = [i ** 2 for i in range(8)]
>>> squares
[0, 1, 4, 9, 16, 25, 36, 49]

Das allgemeine Format hierfür ist:

NEW_LIST = [EXPRESSION for MEMBER in ITERABLE]

Jede List Comprehension in Python enthält drei Elemente:

EXPRESSION

ist ein Aufruf einer Methode oder ein anderer gültiger Ausdruck, der einen Wert zurückgibt. Im obigen Beispiel ist der Ausdruck i ** 2 das Quadrat des jeweiligen Mitgliedswertes.

MEMBER

ist das Objekt oder der Wert in einem ITERABLE. Im obigen Beispiel ist der Wert i.

ITERABLE

ist eine Liste, ein Set, ein Generator oder ein anderes Objekt, das seine Elemente einzeln zurückgeben kann. Im obigen Beispiel ist die Iterable range(8).

Ihr könnt mit List Comprehensions auch optional Bedingungen verwenden, die üblicherweise am Ende des Ausdruck angehängt werden:

>>> squares = [i ** 2 for i in range(8) if i >= 4]
>>> squares
[16, 25, 36, 49]