Seite 1 von 1

Liste Problem

Verfasst: Mittwoch 6. Januar 2021, 15:03
von Good1
L=['Meier','Bauer','Moritz', 'Manuel','Brecht']
sf=[ ]
for e in L:
if e==('M'):
sf=[e]+sf
print(sf)

Meine Frage war es in mir jemand erklären könnte wie sf=[e]+sf genau funktioniert. Das Programm habe ich schon vor längerem geschrieben und jetzt komm ich durcheinander und versteh selbst nicht wie ich drauf gekommen bin. Zweck des Programms ist es alle Namen mit M auszusortieren und zu Printen.

Re: Liste Problem

Verfasst: Mittwoch 6. Januar 2021, 15:22
von noisefloor
Hallo,

du fügst damit der Liste `sf` eine 1-elementige Liste mit dem Element `e` hinzu. Macht man so aber nicht, zum Hinzufügen von Elementen zu einer Liste gibt es die `append` Methode von Listen.

Sonst noch: `if e==('M')` evaluiert hier nie zu `True`, weil in `L` kein Element `M` ist. Wenn du auf den Anfangsbuchstaben von `e` prüfen willst, dann geht das so nicht. Sprich: das Programm macht nicht das, was du willst.

Und die Variablennamen sind wirklich schlecht, weil völlig nichtssagend. Es kostet nichts, aussagekräftige Variablennamen zu nehmen - erhöht aber die Lesbarkeit des Codes.

Gruß, noisefloor

Re: Liste Problem

Verfasst: Mittwoch 6. Januar 2021, 15:37
von Sirius3
@noisefloor: ein Unterschied ist, dass append am Ende anhängt, hier aber ein Element an erster Stelle eingefügt wird.
@Good1: das ist sehr ineffizient, weil die ganze Liste kopiert werden muß.
Wenn man testen will, ob ein String mit einem M anfängt, benutzt man str.startswith.
Variablennamen werden komplett klein geschrieben und sollten aussagekräftig sein.

Code: Alles auswählen

names = ['Meier', 'Bauer', 'Moritz', 'Manuel', 'Brecht']
filtered_names = [name for name in names if name.startswith('M')]