How range() Works — Lazy, Not a List
Published:
• Last updated:
• By Jeferson Peter
Python
Imagine you need a sequence of numbers, like 0 to 9.
Instead of storing them all in memory, Python’srange()
creates a lightweight object that generates numbers only when needed.
Basic usage
print(range(5))
print(list(range(5)))
# range(0, 5)
# [0, 1, 2, 3, 4]
range(5)
is not a list — it’s a special iterable.
Iterating with range
for i in range(3):
print(i)
# 0
# 1
# 2
Memory efficiency
import sys
big_range = range(1_000_000)
big_list = list(range(1_000_000))
print(sys.getsizeof(big_range))
print(sys.getsizeof(big_list))
# Small size for range object
# Much larger size for list
Conclusion
range()
creates a lazy sequence.- It saves memory compared to lists.
- Use it whenever you just need to iterate numbers.