und der erste wert dort gibt an, wie die elemente aussehen sollen.
in deinem fall wird einfach nur b zurück gegeben
Code: Alles auswählen
attribut = [b * b for b in list1 if b]
Code: Alles auswählen
attribut = [b * b for b in list1 if b]
Code: Alles auswählen
[elem for elem in mylist if elem.startswith('x')]
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: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.Code: Alles auswählen
attribut = [b for b in list1 if b]
Das ist richtig.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?
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:cofi hat geschrieben:Code: Alles auswählen
penguin_count = sum(1 for animal in animals if animal == "penguin")
Code: Alles auswählen
penguin_count = sum(animal == "penguin" for animal in animals)