capypad
0 Tage Serie
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
python
1
2
3
4
5
6
7
import sys
 
large_list = [x for x in range(1000000)]
large_gen = (x for x in range(1000000))
 
print(sys.getsizeof(large_list)) # ~8MB
print(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.