Einführung
for Wie bei anderen Programmiersprachen auch, sind Schleifen in Python ein bisschen anders, weil sie eher wie ein Iterator funktionieren und weniger wie ein Schlüsselwort for. In Python gibt's keine Syntax wie C ( for(i=0; i<n; i++) ), sondern man benutzt for in n.
Man kann sie verwenden, um eine Sequenz von list, string, tuple, set, array, data frame zu durchlaufen.
Wenn du eine Liste von Elementen hast, kannst du mit einer Schleife for jedes Element in dieser Liste durchgehen und ausführen.
Um eine Reihe von Elementen zu durchlaufen, benutzen For-Schleifen die Funktion range. Die Funktion range gibt eine neue Liste mit Zahlen aus dem angegebenen Bereich zurück, die auf der Länge der Sequenz basiert.
Wenn du eine Sequenz durchläufst, kannst du auch den Index der Elemente in der Sequenz zum Durchlaufen verwenden, aber der Schlüssel ist, zuerst die Länge der Liste zu berechnen und dann die Reihe innerhalb des Bereichs dieser Länge zu durchlaufen.
Die Schleifen for in Python fangen bei Null an.
Kommen wir schnell zum Teil der Umsetzung.
Du kannst dir auch dieses Video anschauen, um eine kurze Anleitung zu bekommen!
Fang kostenlos an, Python zu lernen
Introduction to Data Science in Python
Schleifen implementieren
Zuerst drucken wir mal Zahlen von 1 bis 10 aus. Da die Schleifen for in Python bei Null beginnen, musst du bei jeder Iteration eins hinzufügen, sonst werden nur Werte von 0 bis 9 ausgegeben.
for i in range(10):
print (i+1)
# 1
# 2
# 3
# 4
# 5
# 6
# 7
# 8
# 9
# 10
Lass uns mit einer for-Schleife durch eine Zeichenfolge eines Wortes gehen Datacamp und nur die Buchstaben ausgeben a.
for i in "Datacamp":
if i == 'a':
print (i)
# a
# a
# a
Angenommen, du möchtest eine Liste von Elementen definieren und diese Elemente nacheinander durchlaufen.
sequence = [1, 2, 8, 100, 200, 'datacamp', 'tutorial']
for i in sequence:
print (i)
# 1
# 2
# 8
# 100
# 200
# datacamp
# tutorial
Aber was ist, wenn du die Länge der Liste herausfinden und dann durchlaufen willst? Du benutzt dafür die eingebaute Funktion len und wendest dann auf den Längenausgang range an.
Denk dran, dass die Funktion range immer einen ganzzahligen Wert erwartet.
sequence = [1, 2, 8, 100, 200, 'datacamp', 'tutorial']
for i in range(len(sequence)):
print (sequence[i])
# 1
# 2
# 8
# 100
# 200
# datacamp
# tutorial
Super! Aber warum solltest du die Funktion len benutzen, wenn du direkt for i in numbers verwenden kannst? Die Antwort ist einfach. Wenn du die Indizes der Sequenz ändern oder bearbeiten möchtest, z. B. das Element einer bestehenden Liste ändern, dann brauchst du range(len(sequence)).
sequence = [1, 2, 8, 100, 200, 'datacamp', 'tutorial']
for i in range(len(sequence)):
element = sequence[i]
if type(element) == int:
sequence[i] = element + 4
print(sequence)
# [5, 6, 12, 104, 204, 'datacamp', 'tutorial']
Cool, oder? Du konntest die Elemente der Liste anhand der Bedingung if ändern.
Schauen wir uns jetzt an, wie du ungerade Zahlen zwischen 1 und 20 ausdrucken kannst. Dazu musst du in der Funktion range drei Sachen festlegen. Der Startpunkt, der Endpunkt und der Inkrementwert (oder die Schritte), mit denen die Schleife die Zahlen von 1 bis 20 durchläuft.
for i in range(1,20,2):
print (i)
# 1
# 3
# 5
# 7
# 9
# 11
# 13
# 15
# 17
# 19
Verschachtelte For-Schleife
for i in range(11):
for j in range(i):
print (i, end=' ')
print()
# 1
# 2 2
# 3 3 3
# 4 4 4 4
# 5 5 5 5 5
# 6 6 6 6 6 6
# 7 7 7 7 7 7 7
# 8 8 8 8 8 8 8 8
# 9 9 9 9 9 9 9 9 9
# 10 10 10 10 10 10 10 10 10 10
For-Schleife zum Durchlaufen der Zeilen und Spalten eines DataFrame
import pandas as pd
iris = pd.read_csv('https://raw.githubusercontent.com/mwaskom/seaborn-data/master/iris.csv')
iris.head()
| sepal_length | sepal_width | petal_length | petal_width | Arten | |
|---|---|---|---|---|---|
| 0 | 5.1 | 3,5 | 1.4 | 0,2 | setosa |
| 1 | 4,9 | 3,0 | 1.4 | 0,2 | setosa |
| 2 | 4,7 | 3.2 | 1.3 | 0,2 | setosa |
| 3 | 4,6 | 3.1 | 1,5 | 0,2 | setosa |
| 4 | 5,0 | 3,6 | 1.4 | 0,2 | setosa |
len(iris)
# 150
for i in range(len(iris)):
Class = iris.iloc[i,4]
if Class == 'versicolor' and i < 70:
print (Class)
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
Als Nächstes addieren wir zwei zu jeder Zeile der Spalten sepal_length,sepal_width, petal_length und petal_width.
columns = ['sepal_length','sepal_width','petal_length','petal_width']
for indices, row in iris.iterrows():
for column in columns:
iris.at[indices,column] = row[column] + 2
iris.head()
| sepal_length | sepal_width | petal_length | petal_width | Arten | |
|---|---|---|---|---|---|
| 0 | 7.1 | 5,5 | 3.4 | 2.2 | setosa |
| 1 | 6,9 | 5,0 | 3.4 | 2.2 | setosa |
| 2 | 6,7 | 5.2 | 3.3 | 2.2 | setosa |
| 3 | 6,6 | 5.1 | 3,5 | 2.2 | setosa |
| 4 | 7,0 | 5,6 | 3.4 | 2.2 | setosa |
Durchlaufen einer Sequenz mit einer Lambda-Funktion
Die Lambda-Funktion von Python ist im Vergleich zur einfachen Schleife for schnell und leistungsstark. Es wird oft benutzt, vor allem bei der Arbeit mit DataFrame. Du kannst deine Daten mit der Funktion Lambda und nur wenig Code bearbeiten. Manchmal ist es aber echt schwer, das zu verstehen.
x = [20, 30, 40, 50, 60]
y = []
for v in x :
y += [v * 5]
print(y)
# [100, 150, 200, 250, 300]
Probieren wir das jetzt mal mit einer Lambda- und einer Map-Funktion aus.
Map nimmt eine Funktion, zum Beispiel eine Lambda-Funktion und eine Sequenz x, und gibt dann eine neue Sequenz zurück.
x = [20, 30, 40, 50, 60]
y = map(lambda x: x * 5,x)
print(y)
# <map object at 0x4063cc8>
Es gibt eine Generatorfunktion zurück, und um die Ausgabe vom Generator zu kriegen, gibst du die Ausgabe als Argument an list weiter.
x = [20, 30, 40, 50, 60]
y = map(lambda x: x * 5,x)
print(list(y))
# [100, 150, 200, 250, 300]
Jetzt lass uns mal einen Schritt zurücktreten und uns sowohl die for-Schleife als auch die Kombination aus Lambda und map() anschauen. Du wirst sehen, dass der Unterschied zwischen den beiden darin besteht, dass map und lambda hinzugefügt und „for“ und „in“ weggelassen wurden. Und du konntest das auch noch in einer einzigen Zeile programmieren.
Fazit
Herzlichen Glückwunsch, dass du dieses grundlegende Tutorial zur Python-For-Schleife abgeschlossen hast.
For-Schleifen sind das A und O jeder Programmiersprache, und in Python ist es echt einfach, For-Schleifen zu programmieren. Im Grunde ist es so ähnlich wie einen englischen Satz zu schreiben.
Wenn du mehr über for-Schleifen in Python lernen willst, schau dir den Kurs Python Data Science Toolbox (Teil 2) von DataCamp an.
Wenn du Fragen zu diesem Tutorial hast, kannst du sie gerne unten in den Kommentaren stellen.
