Chapter 6. Recursions and Reductions
In previous chapters, we've looked at several related kinds of processing designs; some of them are as follows:
- Mapping and filtering that create collections from collections
- Reductions that create a scalar value from a collection
The distinction is exemplified by functions such as map() and filter() that accomplish the first kind of collection processing. There are several specialized reduction functions, which include min(), max(), len(), and sum(). There's a general-purpose reduction function, also, functools.reduce().
We'll also consider a collections.Counter() function as a kind of reduction operator. It doesn't produce a single scalar value per se, but it does create a new organization of the data that eliminates some of the original structure. At its heart, it's a kind of count-group-by operation that has more in common with a counting reduction than with a mapping.
In this chapter, we'll look at reduction functions...