Working with Collections
Python offers a number of functions that process whole collections. They can
be applied to sequences (lists or tuples), sets, mappings, and iterable results
of generator expressions. We'll look at some of Python's collection-processing
functions from a functional programming viewpoint.
We'll start out by looking at iterables and some simple functions that work with
iterables. We'll look at some additional design patterns to handle iterables and
sequences with recursion as well as explicit for loops. We'll look at how we can
apply a scalar() function to a collection of data with a generator expression.
In this chapter, we'll show examples of how to use the following functions to
work with collections:
- any() and all()
- len() and sum() and some higher-order statistical processing related
to these functions - zip() and some related techniques to structure and flatten lists of data
- reversed()
- enumerate()
The first four functions can all be called reductions; they reduce a collection to
a single value. The other three functions (zip(), reversed(), and enumerate())
are mappings; they produce a new collection from an existing collection(s). In the
next chapter, we'll look at some mapping() and reduction() functions that use
an additional function as an argument to customize their processing.
In this chapter, we'll start out by looking at ways to process data using generator
expressions. Then, we'll apply different kinds of collection-level functions to show
how they can simplify the syntax of iterative processing. We'll also look at some
different ways of restructuring data.