Für Schleifen in Python

Für Schleifenanweisungen

Python verwendet eine for-Schleife, um eine Liste von Elementen zu durchlaufen. Im Gegensatz zu C oder Java, die die for-Schleife verwenden, um einen Wert schrittweise zu ändern und mit diesem Wert auf etwas wie ein Array zuzugreifen.

For-Schleifen durchlaufen sammlungsbasierte Datenstrukturen wie Listen, Tupel und Wörterbücher.

Die grundlegende Syntax lautet:

for value in list_of_values: # use value inside this block

Im Allgemeinen können Sie alles als Iteratorwert verwenden, dem Einträge der Iterable zugewiesen werden können. Sie können beispielsweise Tupel aus einer Liste von Tupeln auspacken:

list_of_tuples = [(1,2), (3,4)] for a, b in list_of_tuples: print("a:", a, "b:", b)

Auf der anderen Seite können Sie alles durchlaufen, was iterierbar ist. Sie können eine Funktion aufrufen oder ein Listenliteral verwenden.

for person in load_persons(): print("The name is:", person.name)
for character in ["P", "y", "t", "h", "o", "n"]: print("Give me a '{}'!".format(character))

Einige Möglichkeiten, wie For-Schleifen verwendet werden:

Durchlaufen Sie die Funktion range ()

for i in range(10): print(i)

Range ist keine Funktion, sondern ein unveränderlicher Sequenztyp. Die Ausgabe enthält Ergebnisse von der Untergrenze, dh 0 bis zur Obergrenze, dh 10, jedoch ohne 10. Standardmäßig wird die Untergrenze oder der Startindex auf Null gesetzt. Ausgabe:

> 0 1 2 3 4 5 6 7 8 9 >

Zusätzlich kann man die Untergrenze der Sequenz und sogar den Schritt der Sequenz angeben, indem man einen zweiten und einen dritten Parameter hinzufügt.

for i in range(4,10,2): #From 4 to 9 using a step of two print(i)

Ausgabe:

> 4 6 8 >

xrange () Funktion

Xrange und range sind in Bezug auf die Funktionalität größtenteils exakt gleich. Beide bieten die Möglichkeit, eine Liste von Ganzzahlen zu erstellen, die Sie nach Belieben verwenden können. Der einzige Unterschied besteht darin, dass range ein Python-Listenobjekt und xrange ein xrange-Objekt zurückgibt. Dies bedeutet, dass xrange zur Laufzeit keine statische Liste generiert, wie dies bei range der Fall ist. Es erstellt die Werte nach Bedarf mit einer speziellen Technik namens Nachgeben. Diese Technik wird bei einem Objekttyp verwendet, der als Generatoren bezeichnet wird.

Noch etwas hinzuzufügen. In Python 3.x existiert die Funktion xrange nicht mehr. Die Bereichsfunktion macht jetzt das, was xrange in Python 2.x macht

Durchlaufen Sie Werte in einer Liste oder einem Tupel

A = ["hello", 1, 65, "thank you", [2, 3]] for value in A: print(value)

Ausgabe:

> hello 1 65 thank you [2, 3] >

Iterieren Sie über Schlüssel in einem Wörterbuch (auch bekannt als Hashmap).

fruits_to_colors = {"apple": "#ff0000", "lemon": "#ffff00", "orange": "#ffa500"} for key in fruits_to_colors: print(key, fruits_to_colors[key])

Ausgabe:

> apple #ff0000 lemon #ffff00 orange #ffa500 >

Durchlaufen Sie mit der Funktion zip () zwei Listen gleicher Größe in einer einzigen Schleife

A = ["a", "b", "c"] B = ["a", "d", "e"] for a, b in zip(A, B): print a, b, a == b 

Ausgabe:

> a a True b d False c e False >

Durchlaufen Sie eine Liste und rufen Sie den entsprechenden Index mit der Funktion enumerate () ab

A = ["this", "is", "something", "fun"] for index,word in enumerate(A): print(index, word)

Ausgabe:

> 0 this 1 is 2 something 3 fun >

Ein häufiger Anwendungsfall ist das Durchlaufen eines Wörterbuchs:

for name, phonenumber in contacts.items(): print(name, "is reachable under", phonenumber)

Wenn Sie unbedingt den aktuellen Index Ihrer Iteration zugreifen müssen, tun nicht verwenden range(len(iterable))! Dies ist eine äußerst schlechte Vorgehensweise und bringt Ihnen viele Kichern von erfahrenen Python-Entwicklern. Verwenden Sie enumerate()stattdessen die integrierte Funktion :

for index, item in enumerate(shopping_basket): print("Item", index, "is a", item)

for / else-Anweisungen

Mit Pyhton können Sie else for for-Schleifen verwenden. Der else-Fall wird ausgeführt, wenn keine der Bedingungen im Schleifenkörper erfüllt war. Um das else zu verwenden, müssen wir die breakAnweisung verwenden, damit wir unter einer gesättigten Bedingung aus der Schleife ausbrechen können. Wenn wir nicht ausbrechen, wird der else-Teil ausgeführt.

week_days = ['Monday','Tuesday','Wednesday','Thursday','Friday'] today = 'Saturday' for day in week_days: if day == today: print('today is a week day') break else: print('today is not a week day')

In dem obigen Fall erfolgt die Ausgabe, today is not a week dayda die Unterbrechung innerhalb der Schleife niemals ausgeführt wird.

Durchlaufen Sie eine Liste mit der Inline-Loop-Funktion

Wir könnten auch inline mit Python iterieren. Wenn wir beispielsweise alle Wörter in einer Liste aus einer Liste in Großbuchstaben schreiben müssen, können wir einfach Folgendes tun:

A = ["this", "is", "awesome", "shinning", "star"] UPPERCASE = [word.upper() for word in A] print (UPPERCASE)

Ausgabe:

> ['THIS', 'IS', 'AWESOME', 'SHINNING', 'STAR'] >

Mehr Informationen:

  • Python2 für die Schleifendokumentation
  • Python3 für die Schleifendokumentation