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
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
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.