Python Language Incompatibilities moving from Python 2 to Python 3 Reduce is no longer a built-in


In Python 2, reduce is available either as a built-in function or from the functools package (version 2.6 onwards), whereas in Python 3 reduce is available only from functools. However the syntax for reduce in both Python2 and Python3 is the same and is reduce(function_to_reduce, list_to_reduce).

As an example, let us consider reducing a list to a single value by dividing each of the adjacent numbers. Here we use truediv function from the operator library.

In Python 2.x it is as simple as:

Python 2.x2.3
>>> my_list = [1, 2, 3, 4, 5]
>>> import operator
>>> reduce(operator.truediv, my_list)

In Python 3.x the example becomes a bit more complicated:

Python 3.x3.0
>>> my_list = [1, 2, 3, 4, 5]
>>> import operator, functools
>>> functools.reduce(operator.truediv, my_list)

We can also use from functools import reduce to avoid calling reduce with the namespace name.