Seite 2 von 2
Re: List Comprehension richtig verstehen
Verfasst: Donnerstag 29. Oktober 2015, 14:22
von snafu
Sophus hat geschrieben:Wenn ich mir folgende LC anschaue:
Verstehe ich den For/In-Bereich (
for b in list1) und den If-Statement (
if b). Und ich weiß auch, dass das erste
b ein Ausdruck ist, mit dem die LC immer beginnt. Was macht das erste
b in diesem Fall? Es ist schon mal nicht im For/In-Bereich, also iteriert wird dieser Ausdruck nicht, und in der Bedingung ist er auch nicht mit eingebunden. Und ich glaube auch nicht, dass das erste
b nur als Dekoration dient.
Wie bereits geschrieben (und vielleicht auch inzwischen von dir erkannt): Das erste `b` ist das, was in das Ergebnis der List Comprehension - d.h. in die neue Liste - kommt. Man muss das nochmal gesondert hinschreiben, weil `b` eigentlich `Operation-auf-b` meint. Das kann z.B. auch `b * b` sein oder `b * 2 / x`. Dann landet eben das Resultat dieser Berechnung als jeweiliges Element im Ergebnis der LC.
Sophus hat geschrieben:Im Umkehrschluss: Würde ich rein hypothetisch diesen Ausdruck weglassen, hätte die LC keine Möglichkeit eine neue Liste mit neuen Elementen zu erstellen, da der Ausdruck fehlt?
Das ist richtig.
Re: List Comprehension richtig verstehen
Verfasst: Donnerstag 29. Oktober 2015, 15:35
von cofi
Ich verweise nochmal auf die "Langform" in meinem ersten Post hier
Hier mal ein Beispiel in dem gar kein `b` mehr als erster Ausdruck vorkommt:
Code: Alles auswählen
penguin_count = sum(1 for animal in animals if animal == "penguin")
Re: List Comprehension richtig verstehen
Verfasst: Donnerstag 29. Oktober 2015, 16:40
von kbr
cofi hat geschrieben:Code: Alles auswählen
penguin_count = sum(1 for animal in animals if animal == "penguin")
Schönes Beispiel. Und die 1 kriegen wir auch noch weg:
Code: Alles auswählen
penguin_count = sum(animal == "penguin" for animal in animals)
Wobei beides keine LCs sind, sondern Generator Expressions.
Re: List Comprehension richtig verstehen
Verfasst: Donnerstag 29. Oktober 2015, 16:49
von cofi
Ja, aber dann ist wieder das "b" im ersten Ausdruck

So ganz geeignet war das Beispiel dann doch nicht

Re: List Comprehension richtig verstehen
Verfasst: Donnerstag 29. Oktober 2015, 19:59
von Sophus
Leute Leute, ich weiß ja die Pinguine sehr zu schätzen. Die Tiere sind ja unheimlich süß.
Aber wenn der Ausdruck
b wegfällt, was hat dann die Zahl 1 für eine Funktion? Ich bin wieder verwirrt.

Re: List Comprehension richtig verstehen
Verfasst: Donnerstag 29. Oktober 2015, 20:02
von cofi
Ich hatte mir ja schon sowas gedacht, darum das Beispiel.
Der erste Ausdruck (hier eben 1) ist das was in der Liste landet, das muss mit der Ausgangsliste nichts zu tun haben.
In dem Fall wird also eine Liste mit genauso vielen 1en erstellt wie "pinguin" in `animals` vorkommt.
Re: List Comprehension richtig verstehen
Verfasst: Donnerstag 29. Oktober 2015, 20:07
von Sophus
Ok. Jetzt leuchtet es wieder ein. Ich bin da noch nicht so standfest. Da können mich schon ein paar Pinguine schnell verwirren.
