Aber man kann doch auch nichts aus dem Arbeitsspeicher löschen wenn es noch in einer Datenstruktur referenziert wird. Was sollte denn dann passieren wenn man über das Dictionary auf das Objekt zugreift!?
Bei den `iter*()`-Methoden wird keine Liste erstellt. Die würde Speicherplatz verbrauchen. Und um die Liste zu erstellen muss einmal über alle Elemente des Dictionary iteriert werden. Wenn man diese Liste dann in einer Schleife verwendet wird ein zweites mal über alle Elemente iteriert. Also gibt's ohne Liste auch einen Geschwindigkeitsgewinn.
Grundlage für größeres Programm - was verbessern?
-
- User
- Beiträge: 312
- Registriert: Dienstag 24. Oktober 2006, 19:31
Eigentlich logisch, gut dass ich nachgefragt habe bevor ich in eine falsche Richtung weiterdenke.BlackJack hat geschrieben:Aber man kann doch auch nichts aus dem Arbeitsspeicher löschen wenn es noch in einer Datenstruktur referenziert wird. Was sollte denn dann passieren wenn man über das Dictionary auf das Objekt zugreift!?
Auch wunderbar erklärt, danke.BlackJack hat geschrieben: Bei den `iter*()`-Methoden wird keine Liste erstellt. Die würde Speicherplatz verbrauchen. Und um die Liste zu erstellen muss einmal über alle Elemente des Dictionary iteriert werden. Wenn man diese Liste dann in einer Schleife verwendet wird ein zweites mal über alle Elemente iteriert. Also gibt's ohne Liste auch einen Geschwindigkeitsgewinn.
Also wäre folgendes eines von vielen konkreten Veranschaulichungen, oder?
LGWenn weiters richtig, dann sind die itermethoden auch sehr interessant, wenn innerhalb einer Endlosschleife (while True) z. B. bei einem Vokabeltrainer diese auf Grund einer bestimmten Bedingung verlassen wird (10 Vokabeln hintereinander richtig - Lektionswechsel - neues Dict laden).
rolgal_reloaded
Jup, wenn das Vokabeldictionary 1000 Einträge enthält und man nach 20 die Schleife abbricht, hat man bei `iter*()` auch nur diese 20 "angefasst".