Die for..in
-Anweisung ist eine weitere Schleifen-Anweisung,
die eine Iteration über eine Sequenz von Objekten durchführt,
d.h. sie durchläuft jedes Objekt der Sequenz. Wir werden in späteren Kapiteln Genaueres über
Sequenzen erfahren. Was Sie momentan wissen
müssen, ist nur, dass eine Sequenz einfach eine geordnete Abfolge von einzelnen Objekten ist.
Beispiel 6.3. Gebrauch der for-Anweisung (for.py)
#!/usr/bin/python for i in range(1, 5): print i else: print 'Die for-Schleife ist zu Ende.'
In diesem Programm geben wir eine Sequenz
von Zahlen aus. Wir generieren diese Sequenz von Zahlen mittels der eingebauten
Funktion range
.
In diesem Beispiel übergeben wir ihr zwei Zahlen, und range
gibt eine Sequenz von Zahlen zurück, die von der ersten bis zur zweiten angegebenen Zahl
läuft. Zum Beispiel ergibt range(1,5)
die Sequenz
[1, 2, 3, 4]
. Normalerweise benutzt range
eine Schrittweite von 1. Wenn wir der Funktion range
eine dritte
Zahl übergeben, dann wird diese als Schrittweite benutzt. Zum Beispiel ergibt
range(1,5,2)
die Sequenz [1,3]
.
Denken Sie daran, dass sich der Bereich bis zur
zweiten Zahl erstreckt, diese aber nicht
mit einschließt.
Die for
-Schleife durchläuft dann diesen Zahlenbereich -
for i in range(1,5)
ist gleichbedeutend mit
for i in [1, 2, 3, 4]
, was bewirkt, dass der Variablen
i
der Reihe nach jede Zahl (allgemein jedes Objekt)
in der Sequenz zugewiesen wird, und dann der Anweisungsblock für jeden
dieser Werte von i
ausgeführt wird.
In diesem Fall geben wir im Anweisungsblock einfach diesen Wert aus.
Beachten Sie, dass der else
-Teil optional ist.
Wenn er hinzugefügt wird, wird er immer einmal nach dem Ende der
for
-Schleife ausgeführt, außer wenn die Schleife
durch eine break-Anweisung
abgebrochen wird.
Denken Sie daran, dass die for..in
-Schleife mit jeder beliebigen
Sequenz funktioniert. In diesem Fall haben wir eine mit der eingebauten
range
-Funktion gebildete Liste von Zahlen,
aber wir können ganz allgemein jede Art von Sequenz mit beliebig gearteten Objekten
benutzen. Wir werden dieser Idee in späteren Kapiteln noch einmal genauer nachgehen.
Die for
-Schleife in Python unterscheidet sich radikal
von der for
-Schleife in C/C++. C#-Programmierer
werden bemerken, dass die for
-Schleife in Python
der foreach
-Schleife in C# ähnlich ist. Java-Programmierer
werden bemerken, dass sie for (int i : IntArray)
in Java 1.5
entspricht.
Wo man for (int i = 0; i < 5; i++)
in C/C++ schreibt,
schreibt man in Python einfach for i in range(0,5)
.
Wie Sie sehen, ist die for
-Schleife in Python einfacher,
ausdrucksstärker und weniger fehleranfällig.