10.5 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. See Chapter 5, Higher-Order Functions for more on these functions. The reduce() function is a higher-order function that folds a binary operation 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 expression reduce(lambda x, y: x+y, d) will fold in + operators to the list as if we were evaluating the following:
>>> from functools import reduce 
 
>>> reduce(lambda x, y: x+y, d) 
40 
>>> 2+4+4+4+5+5+7+9 
40It can help to include () to show the effective left-to-right grouping as follows:
>>> ((((((2+4)+4)+4)+5)+5)+7)+9 
40Python’s standard interpretation of expressions involves a left-to-right evaluation...
 
                                             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
     
         
                 
                 
                 
                 
                 
                 
                 
                 
                