Link Search Menu Expand Document

for - Schleifen

Häufig ist es nötig, mit allen Einträgen einer Liste oder eines Vektors eine Operation vorzunehmen. Dafür sind so genannte for-Schleifen geeignet.

l = [1, 2, 3, 4, 5]

for x in l:
    print(x**2)

Eine for-Schleife lässt sich über Listen, Tupel, Strings (als Ketten von Zeichen) und noch einige andere Datentypen durchführen. Der Idee nach taugt alles, was man durchzählen kann.

range( ) und typische for-Schleifen

Eine typische Form der for-Schleife zählt durch. Das lässt sich besonders einfach mit range bewerkstelligen.

for index in range(4):
    print(index, "ter Durchlauf")

Verschachtelte for-Schleifen

for i in range(3):
    print('__________________')
    print("Wert von i", i)
    for j in range(3):
        print("Wert von j", j)

Praktische Beispiele

Im Folgenden wird mithilfe einer for-Schleife unter einer gewissen Bedingung ein Dictionary erstellt. Effektiv wird nun im Dicitonary angegeben, wie oft ein Wort in der Wortliste vorkommt.

alle_woerter = ["Katze", "Katze", "Hund",  "Katze",  "Katze",  "Maus",   "Hund",]

wb = {}
for wort in alle_woerter:
    if wort in wb:
        wb[wort] += 1
    else:
        wb[wort] = 1
        
print(wb)

break, continue

Wie bei while-Schleifen gibt es die Möglichkeit, mit continue direkt zum nächsten Schleifendurchlauf zu springen und mit break die Schleife zu beenden.

for i in range(100):
    if i % 2 == 0:
        continue
    print(i)
    if i % 17 == 0:
        break

Nützliche Funktionen (= Generatoren ) für for-Schleifen (optional)

enumerate

alle_kuchen = ['Apfelkuchen','Streuselkuchen', 'Pflaumenkuchen']

for i, kuchen in enumerate(alle_kuchen):
    print('%i. %s'%(i+1,kuchen))

zip

alle_getraenke = ['Tee', 'Kaffee', 'Wasser']

for kuchen, getraenk in zip(alle_kuchen, alle_getraenke):
    print(kuchen, ' mit ', getraenk)

Noch mehr davon: itertools

In dem Paket der Standardbibliothek itertools gibt es noch mehr nützliche Generatoren. https://docs.python.org/3/library/itertools.html

from itertools import product
for kuchen, getraenk in product(alle_kuchen,alle_getraenke):
    print(kuchen,'mit', getraenk)

List comprehensions (optional)

Um aus Listen neue Listen zu definieren gibt es so genannte list comprehensions:

Abstrakt sieht die Syntax so aus:

neue_liste=[funktion(element) for element in alte_liste if bedingung(element)]

Der Ausdruck ist strukturiert durch for ... in ... if, dabei kann if entfallen.

l1 = [2, 3, 4, 5, 9, 100]
l2 = [a*a for a in l1 if a < 10]

print(l2)