Die for-else-Schleife in Python

In älteren Blogbeiträgen bin ich sowohl auf die for-Schleife als auch auf if-else eingegangen. Darüber hinaus existiert in Python auch eine for-else-Schleife. Das es so eine Schleife gibt, dürfte zunächst als ungewöhnlich erscheinen, schließlich wird in C, C++ oder Java kein „else“ nach einer Schleife verwendet.

Betrachten wir ein Beispiel, um uns mit der for-else-Schleife vertraut zu machen:

german_towns = ['Braunschweig', 'Erfurt', 'Magdeburg']

for i in german_towns:
    if i == 'Lyon':
        print(f"{i} is a town in germany.")
        break
else:
    print("Not found Lyon!")

Die Liste towns enthält keine Stadt mit dem Namen Lyon, was zur folge hat, dass break nicht ausgeführt wird. Stattdessen wird „Not found Lyon!“ ausgegeben, mithin der else-Zweig ausgeführt.

Wird der Code wie folgt geändert, führt dies hingegen zur Ausgabe von „Erfurt is a town in germany.“.

german_towns = ['Braunschweig', 'Erfurt', 'Magdeburg']

for i in german_towns:
    if i == 'Erfurt':
        print(f"{i} is a town in germany.")
        break
else:
    print("Not found Lyon!")

In diesem Fall kommt es nämlich zum break, womit der else-Zweig nicht mehr ausgeführt wird.

Wie den Beispielen entnommen werden kann, ist die for-else-Schleife leicht zu verstehen. Man erhält dadurch eine elegante Möglichkeit der Code-Ausführung — also der Ausführung des else-Zweigs — für den Fall, dass ein Element nicht vorhanden ist. Ohne Vorhandensein einer for-else-Schleife müsste dies beispielsweise über eine Variable, der ein boolescher Wert zugewiesen wird (True oder False), realisiert werden:

german_towns = ['Braunschweig', 'Erfurt', 'Magdeburg']

temp = False

for i in german_towns:
    if i == 'Lyon':
        print(f"{i} is a town in germany.")
        temp = True
        break

if temp is False:
    print("Not found Lyon!")