List comprehension
List Comprehensions benutzt man, um aus Listen neue Listen zu erzeugen. Die allgemeine Syntax lautet:
Zum Beispiel wir haben diese Liste hier:
numbers = [1, 2, 3, 4, 5]
Und ich möchte alle diese Zahlen quadrieren, dann kann ich es so aus numbers eine quadrierte Liste machen:
bigger_numbers = [num ** 2 for num in numbers]
for num in numbers
kennen wir schon von der for
Schleife
und heißt "schleife über alle Zahlen von numbers
".
num
ist dann die Iterationsvariable mit der jetzt was machen können
und was wir machen, steht ganz am Anfang num ** 2
.
All das umschachteln wir mit []
Klammern,
weil wir ja eine neue Liste haben wollen.
print(bigger_numbers)
gibt uns dann das hier:
[1, 4, 9, 16, 25]
Eine Liste filtern
Nicht nur können wir so eine Liste verändern,
sondern wir können mit einer ähnlichen Syntax auch eine Liste filtern.
Lass zum Beispiel von numbers
alle ungeraden Zahlen entfernen!
evens = [num for num in numbers if num % 2 == 0]
print(evens)
[2, 4]
Was passiert hier?
- Mit
for num in numbers
gehen wir über alle Zahlen vonnumbers
. - Mit
if num % 2 == 0
am Ende drückt aus, dass wir die Zahl behalten wollen, die Behauptung vonnum % 2 == 0
nach demif
True
ist. Wenn nicht dann wird, dann ignorieren wir diesenum
. - Die
num
am Anfang sagt, dass wirnum
so wie es ist zur Liste hinzufügen, aber auch nur wenn dasif
True
ist.
Eine Liste filtern und verändern
Wir können auch nach geraden Zahlen filtern und gleichzeitg eine List hoch zwei nehmen.
bigger_and_evens = [num ** 2 for num in numbers if num % 2 == 0]
print(bigger_and_evens)
[4, 16]