W3docs

Python For-Schleifen

Python for-Schleifen verstehen: Syntax, range(), enumerate(), break, continue, else, verschachtelte Schleifen und Iteration über Listen, Strings und Dicts.

Eine for-Schleife in Python iteriert über jedes Element einer Sequenz — einer Liste, eines Tupels, eines Strings, eines Wörterbuchs, einer Menge oder eines anderen iterierbaren Objekts — und führt für jedes Element einen Codeblock aus. Anders als in Sprachen, wo for typischerweise Zahlen zählt, ist Pythons for eine for-each-Schleife, die direkt über Elemente läuft.

Dieses Kapitel behandelt:

  • Grundlegende Syntax und wie die Schleifenvariable funktioniert
  • Die range()-Funktion für Zählschleifen
  • break, continue und die else-Klausel
  • enumerate() und zip() für reichhaltigere Iteration
  • Iteration über Strings, Wörterbücher und verschachtelte Strukturen
  • Verschachtelte for-Schleifen
  • Die pass-Anweisung als Platzhalter

Grundlegende Syntax

for variable in iterable:
    # block executed once per item

variable wird jedes aufeinanderfolgende Element aus iterable zugewiesen. Der eingerückte Block wird einmal für jedes Element ausgeführt.

Über eine Liste iterieren

python— editable, runs on the server

Ausgabe:

apple
banana
cherry

Die Schleife weist fruit den Wert "apple" zu, führt print(fruit) aus, geht dann zu "banana" über und so weiter, bis alle Elemente durchlaufen wurden.

Über einen String iterieren

Ein string ist selbst ein iterierbares Objekt — jedes Zeichen ist ein Element:

for ch in "Python":
    print(ch)

Ausgabe:

P
y
t
h
o
n

Die range()-Funktion

range() erzeugt bei Bedarf eine Folge von ganzen Zahlen. Es ist die gebräuchlichste Methode, um eine Schleife eine bestimmte Anzahl von Malen auszuführen.

range(stop)
range(start, stop)
range(start, stop, step)
ParameterStandardBedeutung
start0Erster Wert (inklusive)
stoperforderlichObere Grenze (exklusive)
step1Schrittweite zwischen Werten

Von 1 bis 5 zählen

python— editable, runs on the server

Ausgabe:

1
2
3
4
5

range(1, 6) erzeugt 1, 2, 3, 4, 5 — der Stoppwert 6 ist nicht enthalten.

In Schritten zählen

for i in range(0, 10, 2):
    print(i)

Ausgabe:

0
2
4
6
8

Rückwärts zählen

Eine negative Schrittweite iteriert in umgekehrter Reihenfolge:

for i in range(10, 0, -2):
    print(i)

Ausgabe:

10
8
6
4
2

Die break-Anweisung

break beendet die Schleife sofort, bevor alle Elemente besucht wurden.

for i in range(1, 6):
    if i == 3:
        break
    print(i)

Ausgabe:

1
2

Sobald i gleich 3 ist, wird break ausgelöst und die Schleife stoppt — 3, 4 und 5 werden nie ausgegeben.

Wann break verwendet werden sollte: wenn man eine Liste durchsucht und stoppt, sobald eine Übereinstimmung gefunden wurde; beim vorzeitigen Abbruch einer langen Berechnung.


Die continue-Anweisung

continue überspringt den Rest der aktuellen Iteration und springt direkt zum nächsten Element.

for i in range(1, 6):
    if i == 3:
        continue
    print(i)

Ausgabe:

1
2
4
5

Wenn i gleich 3 ist, überspringt continue den Aufruf print(i) und springt zu i = 4.


Die else-Klausel

Pythons for-Schleife unterstützt einen optionalen else-Block, der nur ausgeführt wird, wenn die Schleife normal abgeschlossen wurde (d. h. nicht durch break beendet wurde).

for i in range(1, 4):
    print(i)
else:
    print("Loop finished")

Ausgabe:

1
2
3
Loop finished

Wenn die Schleife über break beendet wird, wird der else-Block übersprungen:

for i in range(1, 6):
    if i == 3:
        break
    print(i)
else:
    print("Loop finished without break")

Ausgabe:

1
2

Die else-Klausel ist nützlich, um anzuzeigen, ob eine Suche erfolgreich war — wenn man bei einer Übereinstimmung break auslöst, wird der else-Block nur ausgeführt, wenn keine Übereinstimmung gefunden wurde.


enumerate() — Schleife mit Index und Wert

enumerate() verbindet jedes Element mit seinem Positionsindex, sodass man beides in einer Schleife erhält, ohne eine separate Zählervariable zu benötigen.

colors = ["red", "green", "blue"]
for index, color in enumerate(colors):
    print(index, color)

Ausgabe:

0 red
1 green
2 blue

Um die Zählung bei einer anderen Zahl zu beginnen, übergibt man start:

fruits = ["apple", "banana", "cherry"]
for i, fruit in enumerate(fruits, start=1):
    print(i, fruit)

Ausgabe:

1 apple
2 banana
3 cherry

zip() — gleichzeitig über zwei Sequenzen iterieren

zip() verbindet Elemente aus zwei (oder mehr) iterierbaren Objekten nebeneinander:

names = ["Alice", "Bob", "Charlie"]
scores = [95, 87, 92]
for name, score in zip(names, scores):
    print(name, score)

Ausgabe:

Alice 95
Bob 87
Charlie 92

zip() stoppt, wenn das kürzeste iterierbare Objekt erschöpft ist.


Über Wörterbücher iterieren

Das Iterieren über ein Wörterbuch liefert standardmäßig die Schlüssel:

person = {"name": "Alice", "age": 30, "city": "Paris"}
for key in person:
    print(key, ":", person[key])

Ausgabe:

name : Alice
age : 30
city : Paris

Mit .items() erhält man Schlüssel-Wert-Paare zusammen:

for key, value in person.items():
    print(key, ":", value)

Ausgabe:

name : Alice
age : 30
city : Paris

Weitere Muster finden sich im Kapitel Wörterbücher durchlaufen.


Verschachtelte for-Schleifen

Eine for-Schleife kann in einer anderen for-Schleife platziert werden. Die innere Schleife wird für jede einzelne Iteration der äußeren Schleife vollständig durchlaufen.

python— editable, runs on the server

Ausgabe:

red apple
red banana
red cherry
big apple
big banana
big cherry
tasty apple
tasty banana
tasty cherry

Achtung: break innerhalb einer verschachtelten Schleife beendet nur die innere Schleife, nicht beide. Um beide Schleifen auf einmal zu beenden, benötigt man eine Flag-Variable oder muss den Code in eine Funktion auslagern und return verwenden.


Die pass-Anweisung

pass ist ein No-Op-Platzhalter. Verwende ihn, wenn eine for-Schleife syntaktisch erforderlich ist, aber noch kein Inhalt für den Body vorhanden ist:

for i in range(3):
    pass  # TODO: implement later

Ohne pass würde Python einen IndentationError auslösen, da ein leerer Block keine gültige Syntax ist.


For-Schleifen vs. List Comprehensions

Ein häufiges Muster ist das Erstellen einer neuen Liste innerhalb einer for-Schleife:

squares = []
for x in range(1, 6):
    squares.append(x ** 2)
print(squares)

Ausgabe: [1, 4, 9, 16, 25]

Python bietet eine kompaktere Alternative namens List Comprehension:

squares = [x ** 2 for x in range(1, 6)]
print(squares)

Ausgabe: [1, 4, 9, 16, 25]

List Comprehensions sind idiomatisch für einfache Transformationen; verwende eine reguläre for-Schleife, wenn der Body komplex ist oder Nebeneffekte hat.


Wahl zwischen for und while

SituationBevorzuge
Du kennst die Anzahl der Iterationen oder hast ein iterierbares Objektfor
Du schleifst, bis sich eine Bedingung ändertwhile
Du benötigst Index und Wertfor + enumerate()
Du iterierst über zwei Listen gleichzeitigfor + zip()

Übungen

Übung
Which built-in function generates a sequence of integers for use in a for loop?
Which built-in function generates a sequence of integers for use in a for loop?
Übung
What does the else clause of a for loop do?
What does the else clause of a for loop do?
Übung
What are the primary uses of for loops in Python?
What are the primary uses of for loops in Python?
Was this page helpful?