## Reducing sets of data with the reduce() function

The `sum()`

, `len()`

, `max()`

, and `min()`

functions are in a way all specializations of a more general algorithm expressed by the `reduce()`

function. The `reduce()`

function is a higher-order function that folds a function into each pair of items in an iterable.

A sequence object is given as follows:

d = [2, 4, 4, 4, 5, 5, 7, 9]

The function `reduce(lambda x, y: x+y, d)`

will fold in `+`

operators to the list as follows:

2+4+4+4+5+5+7+9

It can help to include `()`

to show the effective left-to-right grouping as follows:

((((((2+4)+4)+4)+5)+5)+7)+9

Python's standard interpretation of expressions involves a left-to-right evaluation of operators. Consequently, a fold left isn't a change in meaning. Some functional programming languages offer a fold-right alternative. When used in conjunction with recursion, a compiler for another language can do a number of clever optimizations. This isn't available in Python: a reduction is always left to right.

We can also provide...