The following article describes How to Use Generators in Python.
Basically, Generators in Python are a way to create iterators, which are objects that can be iterated (looped) over, but they don’t store the entire sequence of values in memory. Instead, they generate values one at a time on-the-fly, which can be very memory-efficient for large data sets or infinite sequences.
As a matter of fact, you can create generators in Python using two main methods: generator functions and generator expressions.
Generator functions are defined using the
yield keyword in a function. When a function contains a
yield statement, it becomes a generator function. For example.
def simple_generator(): yield 1 yield 2 yield 3 # Create a generator object my_generator = simple_generator() # Iterate over the generator for value in my_generator: print(value)
When you call
simple_generator(), it returns a generator object. So, the generator only generates one value at a time when you iterate over it. The state of the generator function is saved between each
Actually, Generator expressions are similar to list comprehensions but use parentheses instead of square brackets. They create a generator object, which you can iterate over. For example.
squares = (x**2 for x in range(1, 6)) # Iterate over the generator expression for square in squares: print(square)
In this example,
squares is a generator expression that generates the squares of numbers from 1 to 5. It’s efficient because it doesn’t create a list of squares in memory; it generates them as needed.
Key points to remember when using generators
- Generators are lazy and memory-efficient, making them suitable for large data sets or infinite sequences.
- Moreover, you can iterate over generators using
forloops or by calling
next()on the generator object.
- Once a generator is exhausted (i.e., it has no more values to yield), it raises a
- Also, you can create custom generator functions to yield values based on your requirements, including reading data from files, databases, or APIs one item at a time.
The following example shows a custom generator function that yields Fibonacci numbers.
def fibonacci_generator(): a, b = 0, 1 while True: yield a a, b = b, a + b # Create a generator object for Fibonacci numbers fib_gen = fibonacci_generator() # Generate and print the first 10 Fibonacci numbers for _ in range(10): print(next(fib_gen))
So, this generator will keep generating Fibonacci numbers indefinitely.
- Dot Net Framework
- Power Bi
- Scratch 3.0