Das Erstellen von Listen in Python ist sehr einfach. Man kann [0] * 50 verwenden, um eine Liste mit 50 Nullen zu erstellen. Eine andere Möglichkeit, die detailliertere Kontrolle über die Elemente bietet, ist das Iterieren mit einer for-Schleife und das nacheinander Anhängen von Elementen. Es gibt jedoch noch eine weitere Methode zur Erstellung einer Liste: die List Comprehension. Wenn wir zum Beispiel eine Liste der Quadrate der Zahlen von 1 bis 100 erstellen möchten, könnten wir das so tun:
squares = []
for n in range(1, 100):
squares.append(n * n)
print(squares)
squares = [n * n for n in range(1, 100)]
print(squares)
Beide Programme würden dasselbe Ergebnis ausgeben und dieselbe Liste von Quadratzahlen erstellen – [1, 4, 9, 16, 25, 36, 49, 64, 81, ..., 9216, 9409, 9604, 9801].
Also lautet die Syntax für eine List Comprehension:
Die Comprehension steht innerhalb von öffnenden und schließenden eckigen Klammern [].
Die for-Schleife iteriert über Werte.
Die Elemente der Liste stehen vor dem Schlüsselwort for und können von der Variablen der for-Schleife abhängen.
Wenn wir zum Beispiel Geburtstagseinladungen versenden möchten, stellen Sie sich vor, Sie haben eine Liste von Namen erstellt, die wir einladen möchten, aber wir haben sie versehentlich alle in Kleinbuchstaben geschrieben. Jetzt können wir eine List Comprehension verwenden, um das zu korrigieren:
invites = [
'anna',
'alice',
'bob',
'simon',
'thomas'
]
fixed = []
for name in invites:
fixed.append(name.title())
print(fixed)
invites = [
'anna',
'alice',
'bob',
'simon',
'thomas'
]
fixed = [name.title() for name in invites]
print(fixed)
Beide Programme werden ['Anna', 'Alice', 'Bob', 'Simon', 'Thomas'] ausgeben.
Herausforderung
Gegeben sind n Vor- und Nachnamen. Sie sollen die Vornamen extrahieren und sowohl die ursprüngliche Liste als auch die Liste mit nur den Vornamen ausgeben.
Die erste Zeile der Eingabe enthält eine einzelne ganze Zahl n. Die nächsten n Zeilen enthalten Vorname Nachname Paare.
Das Programm soll zuerst die ursprüngliche Liste ausgeben und dann die Liste mit nur den Vornamen.
Eingabe
Ausgabe
3
Marshall Mathers
Peter Hernandez
Curtis Jackson
Marshall Mathers
Peter Hernandez
Curtis Jackson
Marshall
Peter
Curtis
Tipp
Sie können .split()[0] verwenden, um das erste Element zu erhalten, nachdem die Zeichenfolge an Leerzeichen aufgeteilt wurde.
Man kann sogar mit einer List Comprehension ausgeben:
l = ['hi', 'my', 'name', 'is']
[print(item) for item in l]