The itertools
module provides a number of functions that we can use to enhance or enrich an iterable source of data. We'll look at the following three functions:
Our goal is to understand how these various iterator functions can be used in generator expressions and with generator functions.
The built-in range()
function is defined by an upper limit: the lower limit and step values are optional. The count()
function, on the other hand, has a start and optional step, but no upper limit.
This function can be thought of as the primitive basis for a function such as enumerate()
. We can define the enumerate()
function in terms of zip()
and count()
functions, as follows:
enumerate = lambda x, start=0: zip(count(start), x)
The enumerate()
function behaves as if it's a zip...