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
xden Wert6undyden Wert3erhält.- Zeilen 2–10
Dies ist die
while-Schleife mit der Anweisungx > y, die wahr ist, solangexgrößer alsyist.- Zeile 3
xwird um1reduziert- Zeile 4
if-Bedingung, bei derxexakt4sein soll.- Zeile 5
breakbeendet die Schleife.- Zeilen 8 und 9
gibt die Ergebnisse der
while-Schleife aus bevor die Ausführung mitbreakunterbrochen 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
continuebricht 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:
EXPRESSIONist ein Aufruf einer Methode oder ein anderer gültiger Ausdruck, der einen Wert zurückgibt. Im obigen Beispiel ist der Ausdruck
i ** 2das Quadrat des jeweiligen Mitgliedswertes.MEMBERist das Objekt oder der Wert in einem
ITERABLE. Im obigen Beispiel ist der Werti.ITERABLEist 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]
Checks¶
Entfernt aus der Liste
x = [ -2, -1, 0, 1, 2, 3], alle negativen Zahlen.Welche List-Comprehension würdet ihr verwenden, um zum selben Ergebnis zu kommen?
Wie würdet ihr die Gesamtzahl der negativen Zahlen in der Liste
[-[1, 0, 1], [-1, 1, 3], [-2, 0, 2]]zählen?Erstellt einen Generator, der nur ungerade Zahlen von 1 bis 10 liefert.
Tipp
Eine Zahl ist ungerade, wenn bei der Division durch 2 ein Rest übrig bleibt; also wenn
% 2wahr ist.Schreibt ein Dict mit den Kantenlängen und Volumen von Würfeln.