capypad
0 day streak
python / intermediate
Snippet

Generator Expressions for Memory Efficiency

Unlike list comprehensions, generator expressions use parentheses and yield items one by one. This is significantly more memory-efficient for large datasets.

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
Breakdown
1
[x for x in range(...)]
Creates the entire list in memory immediately.
2
(x for x in range(...))
Creates a generator object that produces values on demand, saving memory.