Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
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?
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.