Ich glaube dann hast Du das Konzept von Objekten noch nicht verstanden! BlackJack hat Dir das eigentlich ganz schön aufgeschrieben, so dass ich nicht weiß, ob ich es noch anschaulicher darstellen kann.
Ich versuche es noch einmal anhand meines Beispiels:
Anhand der Syntax einer ``for``-Schleife ist sofort klar, welcher Name semantisch die
Sammlung darstellt und welcher das jeweils das einzelne
Objekt repräsentiert, welches sich bei jedem Durchlauf der Schleife ändert. Direkt nach dem ``for`` steht der Name des einzelnen Objekts, nach dem ``in`` der Name, der das Objekt der Sammlung (also eine Liste, eines Sets, Tupels, Dictionaries oder allgmein ein ``Iterable``) repräsentiert.
Wenn meine Sammlung ``enten`` heißt, so lässt sich vermuten, dass darin lauter Enten-Objekte gespeichert sind. Wenn das einzelne Objekt dann ``ente`` heißt, wird sofort klar, dass es sich dabei um *ein* Enten-Objekt handelt. Auf deutsch übersetzt könnte man das (fast) flüssig lesen: "Für jedes Ente-Objekt in der Enten-Sammlung".
Es gibt keinen speziellen Typen für Elemente einer Sammlung! Ich kann ein Entenobjekt in eine Liste, ein Tupel, ein Set usw. stecken. Ich kann auch eine eigene Sammlung bauen, in der ein solches Objekt stecken kann. Der Name ``listenelement`` sagt also nichts aus, er ist viel zu allgemein. Innerhalb des Schleifenrumpfs ist das auch nur ein quasi beliebiger Name, an den ein Objekt aus der Sammlung gebunden ist. Es ist im Schleifenrumpf überhaupt kein besonderes Objekt, es hat keine besonderen Eigenschaften oder so. Sehe ich jedoch den Namen ``ente``, so erscheinen die Methoden ``.flieg`` oder ``.quack`` gleich sehr passend zu sein. Beides zusammen bildet eine Einheit! Ich könnte natürlich auch folgendes schreiben:
Dann müsste ich in der Schleife eben Aufrufe a la ``yxAbcD45Ef1299.flieg()`` - offensichtlich, dass sich das nicht gut liest!
``listenelement`` ist insofern aber noch schlimmer, als es sich bei der Sammlung ja gar nicht um eine Liste handeln muss! Du codierst also den (vermeindlichen) Typen in den Namen hinein... was machst Du, wenn aus der Liste ein Dictionary wird? Änderst Du dann den Namen auch um? Denkst Du daran? Wirklich bei allen Code-Stellen? Ich antworte mal für Dich: Nein!

Alles, woran man als Entwickler selbständig denken muss, vergisst man früher oder später! Und das hat zur Folge, dass Dein Code
lügt! Du könntest versucht sein Dinge zu tun, die nur bei Listen klappen; und das führt dann zu einem Fehler...
Ein Name sollte "intention revealing" sein, also die Intention des Autors vermitteln. Du würdest den Namen für die Sammlung ja auch eher ``enten`` nennen, als ``Liste``, oder? Wieso also beim Namen für das einzelne Objekt dann ``Listenelement``? Semantisch macht es keinen Unterschied... aber ``Liste`` sagt eben nicht viel aus; im Gegenteil wäre auch da wieder der Typ codiert. Aber selbst wenn ich ``Sammlung`` nähme, wüsste man immer noch nicht, *was* da eigentlich für Objekte in der Sammlung stecken. Und im Schleifenrumpf will man doch genau mit diesen etwas anstellen - da ist es hilfreich zu wissen, *womit* man es zu tun hat. *Dass* diese aus einer Sammlung (oder einem Iterable) stammen, ist doch
automatisch durch die Schleife klar!