Язык программирования Python

       

Функция reduce()


Для организации цепочечных вычислений (вычислений с накоплением результата) можно применять функцию reduce(), которая принимает три аргумента: функцию двух аргументов, последовательность и начальное значение. С помощью этой функции можно, в частности, реализовать функцию sum():

def sum(lst, start): return reduce(lambda x, y: x + y, lst, start)

Совет:

Следует помнить, что в качестве передаваемого объекта может оказаться список, который позволит накапливать промежуточные результаты. Тем самым, reduce() может использоваться для генерации последовательностей.

В следующем примере накапливаются промежуточные результаты суммирования:

lst = range(10) f = lambda x, y: (x[0] + y, x[1]+[x[0] + y]) print reduce(f, lst, (0, []))

В итоге получается:

(45, [0, 1, 3, 6, 10, 15, 21, 28, 36, 45])



Содержание раздела