python / intermediate
Snippet
Generator-Ausdrücke für Speichereffizienz
Im Gegensatz zu Listen-Abstraktionen verwenden Generator-Ausdrücke Klammern und liefern Elemente einzeln nacheinander. Dies ist bei großen Datensätzen deutlich speichereffizienter.
snippet.py
1
2
3
4
5
6
7
import syslarge_list = [x for x in range(1000000)]large_gen = (x for x in range(1000000))print(sys.getsizeof(large_list)) # ~8MBprint(sys.getsizeof(large_gen)) # ~100 bytes
Erklärung
1
[x for x in range(...)]
Erstellt die gesamte Liste sofort im Speicher.
2
(x for x in range(...))
Erstellt ein Generator-Objekt, das Werte bei Bedarf erzeugt und so Speicher spart.