When iterators behave as lists
Some list operations also work on iterators. We will now examine the equivalents of list comprehensions and list zipping (refer to section List of Chapter 3, Container Types, for more details).
Generator expression
There is an equivalent of list comprehension for generators. Such a construction is called a generator expression:
g = (n for n in range(1000) if not n % 100) # generator for 100, 200, ... , 900
This is useful in particular for computing sums or products because those operations are incremental; they only need one element at a time:
sum(n for n in range(1000) if not n % 100) # returns 4500
In that code, you notice that the sum
function is given one argument, which is a generator expression. Note that Python syntax allows us to omit the enclosing parentheses of generators when a generator is used as the only argument of a function.
Let us compute the Riemann zeta function ζ, whose expression is
With a generator expression...