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 numbersgehen wir über alle Zahlen vonnumbers. - Mit
if num % 2 == 0am Ende drückt aus, dass wir die Zahl behalten wollen, die Behauptung vonnum % 2 == 0nach demifTrueist. Wenn nicht dann wird, dann ignorieren wir diesenum. - Die
numam Anfang sagt, dass wirnumso wie es ist zur Liste hinzufügen, aber auch nur wenn dasifTrueist.
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]