Zum Hauptinhalt springen

Generator Expressions

Liste vs Generator

quadrate_liste = [x * x for x in range(5)] # Liste im Speicher
quadrate_gen = (x * x for x in range(5)) # Generator
print(quadrate_liste)
print(list(quadrate_gen))

Direkt verbrauchen

print(sum(x * x for x in range(1, 6)))

Rate mal!

Kann man einen Generator zweimal for-en?

Auflösung

Meist nein – nach dem Durchlauf ist er erschöpft. Neu erzeugen.

Probiere es selbst

Experiment 1

Generator Expression 1..10.

Experiment 2

sum damit.

Experiment 3

list() drum, um alle zu sehen.

Übungen

Level 1

(i for i in range(3)) + list.

Level 2

sum der Quadrate 1..10.

Level 3

Filter gerade in Generator Expression.

Level-2-Lösung
print(sum(i * i for i in range(1, 11)))

Mini-Quiz

Mini-QuizWelche Klammern fuer Generator Expression?

Expressions sitzen! Als Nächstes: Pipelines.