Python Generators and Lazy Evaluation: How to Save Time and Memory

Max N
3 min readApr 11, 2024
Photo by Liam Briese on Unsplash

When working with large datasets in Python, it’s important to optimize both time and memory usage. That’s where generators and lazy evaluation come in handy. These tools allow you to work efficiently with large data structures and keep your program running smoothly.

In this article, we’ll explore what generators are and how they relate to lazy evaluation. We’ll also look at code examples to help you understand these concepts better.

What Are Generators?

A generator in Python is a function that returns an iterable object. Instead of returning all the results at once, a generator function yields results one by one using the yield keyword. This means you can work with one item at a time, which is great for handling large data sets.

Creating a Generator

Here’s a simple example of a generator function that yields numbers from 1 to 5:

def count_to_five():
for i in range(1, 6):
yield i

for number in count_to_five():
print(number)

When you run the code, the generator will yield one number at a time from 1 to 5. The loop iterates over each yielded value and prints it.

Lazy Evaluation

--

--

Max N

A writer that writes about JavaScript and Python to beginners. If you find my articles helpful, feel free to follow.