PyPy: Python Iterationen

Hallo,

ich habe eine Klasse mit der Klassenattributsliste "Liste", also MeineKlasse.Liste. In der sind Instanzen anderer Klassen hinterlegt, so dass ich per MeineKlasse.Liste.Attribut auf die Klassenattribute der zweiten Klasse über die Instanz zugreifen kann.

So weit so gut, ich hoffe ihr habt den Aufbau verstanden, nun möchte ich durch die Liste durchiterieren und frage mich, ob es hierzwischen irgendeinen Unterschied gibt:

for i in self.Liste:
   if self.Liste[i].Attribut = "TEST":
      return 0
   else:
      return 1

oder das hier:

for i in range(len(self.Liste))
   if self.Liste[i].Attribut = "TEST":
      return 0
   else:
      return 1

Oben wäre i (hab ich per print(type(i)) ausgegeben) ganz einfach eine Klasseninstanz, unten wäre es ein Integer. Ändert das irgendwas beim Zugriff? In beiden Fällen scheint es bei mir zu funktionieren, deswegen frage ich mich, ob es auch in speziellen Fällen nicht funktionieren würde.

Vielen Dank. :)

  1. Hi!

    So weit so gut, ich hoffe ihr habt den Aufbau verstanden, nun möchte ich durch die Liste durchiterieren und frage mich, ob es hierzwischen irgendeinen Unterschied gibt:

    Ein Bild sagt mehr als tausend Worte, gilt auch beim Programmieren. Wenn du nicht unsere Leseverständnisfähigkeiten prüfen willst :-) wäre ein einfacher realer Beispiel-Code zum Nachvollziehen besser. Liste ist also das, was unter Python auch so erzeugt wird: ['a', 'b', 'e']

    for i in self.Liste:
       if self.Liste[i].Attribut = "TEST":

    Wieso sollte das iterieren über die Elemente einer Liste einen Zähler liefern? i müsste eigentlich jeweils direkt ein Element der Liste sein.
    Also i.Attribut = ...

    In beiden Fällen scheint es bei mir zu funktionieren, deswegen frage ich mich, ob es auch in speziellen Fällen nicht funktionieren würde.

    Wenn beide Fälle funktionieren, was ich anhand der Beispiele nicht ganz glaube, dann nimm das was verständlicher ist.

    Lo!