В Python 3.3, itertools.accumulate()
, который обычно повторно применяет операцию добавления к поставляемому итерабельному, теперь может принимать аргумент функции в качестве параметра; это означает, что теперь он перекрывается с functools.reduce()
. При беглом взгляде, основные различия между ними сейчас, казалось бы:itertools.accumulate() versus functools.reduce()
accumulate()
по умолчанию для суммирования, но не позволяет поставить дополнительное начальное условие в явном виде, аreduce()
не по умолчанию любым способом, но делает позволяют поставить начальное условие для использования с 1/последовательностей 0-элементных и 2)accumulate()
принимает итерацию первый в то время какreduce()
принимает функцию первого
существуют ли другие различия между этими двумя? Или это просто вопрос поведения двух функций, изначально отличающихся друг от друга, начинающих со временем сходиться?
накапливает выполняет проверку https://en.wikipedia.org/wiki/Prefix_sum, а сокращение выполняет сгиб https://en.wikipedia.org/wiki/Fold_(higher-order_function) –