Sobes.tech
Junior

What is a generator expression?

sobes.tech AI

Answer from AI

Generator expression is a concise way to create a generator. It is similar to list comprehension, but instead of creating a complete list in memory, it returns an iterator that generates elements on demand.

Advantages:

  • Memory savings, especially when working with large data sets.
  • Lazy evaluation: elements are generated only when requested.
  • More concise syntax compared to generator functions.

Syntax:

# (expression for element in iterable if condition)

Example:

# Generator expression for even numbers from 0 to 9
even_numbers_generator = (x for x in range(10) if x % 2 == 0)

# Using the generator
print(next(even_numbers_generator))  # 0
print(next(even_numbers_generator))  # 2

Comparison with generator functions:

Generator functions are created using the yield keyword. They are more flexible and can have more complex logic, including maintaining state between calls.

# Generator function for even numbers
def generate_even_numbers(limit):
    for x in range(limit):
        if x % 2 == 0:
            yield x

# Using the generator function
even_gen = generate_even_numbers(10)
print(next(even_gen)) # 0

Comparison with list comprehension:

List comprehension creates and returns a full list.

# List comprehension for even numbers
even_numbers_list = [x for x in range(10) if x % 2 == 0]
print(even_numbers_list)  # [0, 2, 4, 6, 8]

Comparison table:

Feature Generator expression List comprehension
Object created Generator (iterator) List
Memory Saves memory Uses a lot of memory
Evaluation Lazy Eager (immediate)
Syntax Concise Concise
Use of yield No No

Generator expressions are often used in for loops, as arguments to functions that require an iterator (e.g., sum(), max()), or when a single pass over elements is needed without storing them in memory.

What is a generator expression? — Python - sobes.tech