Functional Python Programming

(Wang) #1
Chapter 8

Using the finite iterators


The itertools module provides a number of functions that we can use to produce
finite sequences of values. We'll look at ten functions in this module, plus some
related built-in functions:



  • enumerate(): This function is actually part of the builtins package,
    but it works with an iterator and is very similar to other functions in the
    itertools module.

  • accumulate(): This function returns a sequence of reductions of the input
    iterable. It's a higher-order function and can do a variety of clever calculations.

  • chain(): This function combines multiple iterables serially.

  • groupby(): This function uses a function to decompose a single iterable into
    a sequence of iterables over subsets of the input data.

  • zip_longest(): This function combines elements from multiple iterables.
    The built-in zip() function truncates the sequence at the length of the
    shortest iterable. The zip_longest() function pads the shorter iterables
    with the given fillvalue.

  • compress(): This function filters one iterable based on a second iterable
    of Boolean values.

  • islice(): This function is the equivalent of a slice of a sequence when
    applied to an iterable.

  • dropwhile() and takewhile(): Both of these functions use a Boolean
    function to filter items from an iterable. Unlike filter() or filterfalse(),
    these functions rely on a single True or False value to change their filter
    behavior for all subsequent values.

  • filterfalse(): This function applies a filter function to an iterable.
    This complements the built-in filter() function.

  • starmap(): This function maps a function to an iterable sequence of tuples
    using each iterable as an *args argument to the given function. The map()
    function does a similar thing using multiple parallel iterables.


We've grouped these functions into approximate categories. The categories are
roughly related to concepts of restructuring an iterable, filtering, and mapping.

Free download pdf