В этом уроке по Python, мы рассмотрим функцию accumulate()
из встроенной библиотеки itertools. Данная функция создает итератор, который возвращает накопленные суммы или накопленные результаты функции переданной в виде необязательного аргумента.
Синтаксис:
import itertools
itertools.accumulate(iterable[, func, *, initial=None])
Аргументы:
iterable
- итерируемая последовательность,func
- функция, принимающая два аргумента,initial=None
- начальное значение.
Если задан необязательный аргумент func
, это должна быть функция, принимающая два аргумента. Первый аргумент функции — накопленный результат, второй аргумент функции — следующий элемент iterable
объекта.
Элементы итерируемой последовательности могут быть любого типа, которые могут быть приняты в качестве аргументов функции func
. Например, в стандартной операции сложения добавляемые элементы могут быть любого типа, включая десятичные или рациональные числа.
Известно, что возвращаемое количество элементов совпадает с количеством входных элементов в итераторе iterable
. Но мы можем регулировать это с помощью аргумента initial
, указав с какого начального значения начинать, но и в этом случае итератор будет иметь один дополнительный элемент.
Пример:
import operator
from itertools import accumulate
list_data = [23, 30, 28, 23, 22, 21, 10, 15, 16, 35]
# Получаем произведение с помощью операторной функции
print(list(accumulate(list_data, operator.mul)))
# Находим максимальное число
print(list(accumulate(list_data, max)))
Результат:
>>> [23, 690, 19320, 444360, 9775920, 205294320, 2052943200, 30794148000, 492706368000, 17244722880000]
>>> [23, 30, 30, 30, 30, 30, 30, 30, 30, 35]
Похожая функция: Функция reduce() в Python