In this chapter, we've looked at a number of functions in the itertools
module. This library module provides a number of functions that help us to work with iterators in sophisticated ways.
We've looked at the infinite iterators; these repeat without terminating. These include the count()
, cycle()
, and repeat()
functions. Since they don't terminate, the consuming function must determine when to stop accepting values.
We've also looked at a number of finite iterators. Some of these are built-in, and some of these are a part of the itertools
module. These work with a source iterable, so they terminate when that iterable is exhausted. These functions include enumerate()
, accumulate()
, chain()
, groupby()
, zip_longest()
, zip()
, compress()
, islice()
, dropwhile()
, takewhile()
, filterfalse()
, filter()
, starmap()
, and map()
. These functions allow us to replace possibly complex generator expressions with simpler-looking functions.
Additionally, we looked at the recipes from the documentation...