A Byte of Python

Die for-Schleife

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.

Gebrauch der for-Anweisung

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.'
				
				

Ausgabe

				
$ python for.py
1
2
3
4
Die for-Schleife ist zu Ende.
				
				

So funktioniert es

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.

Anmerkung für C/C++/Java/C#-Programmierer

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.