В Python 3.3 itertools.accumulate()
, который обычно многократно применяет операцию добавления к предоставленной итерации, теперь может принимать аргумент функции в качестве параметра; это означает, что теперь он перекрывается с functools.reduce()
. При поверхностном взгляде основные различия между ними теперь выглядят так:
accumulate()
по умолчанию суммирует, но не позволяет вам явно указать дополнительное начальное условие, в то время какreduce()
не использует по умолчанию какой-либо метод, но позволяет вам задать начальное условие для использования с последовательностями 1/0-элемента, иaccumulate()
выполняет итерацию первым, аreduce()
- функцию первой.
Есть ли другие различия между ними? Или это просто вопрос поведения двух функций с изначально различными видами использования, которые начинают сходиться со временем?