Расчеты нарастающим итогом с модулем itertools

Опубликован: 05.11.2023 197

Вычисление нарастающим итогом является довольно частой операцией в аналитических и экономических расчетах, когда требуется, например посчитать затраты или прибыль по месяцам (кварталам).

При этом, каждый элемент числовой последовательности нужно складывать с суммой всех предыдущих элементов за определенный период времени.

Для облегчения подобных вычислений в Python можно использовать встроенный модуль itertools, который предоставляет набор готовых функций для облегчения и эффективной работы с итерируемыми последовательностями.

В частности, функция itertools.accumulate() позволяет высчитывать сумму (или произведение) предыдущих элементов последовательности нарастающим итогом и возвращает итератор накопленных значений.

Cинтаксис: itertools.accumulate(iterable, func=operator.add, *, initial=None)

iterable - итерируемая числовая последовательность; func - функция оператора вычислений, по умолчанию используется оператор суммирования operator.add; initial - начальное значение вычисляемой последовательности.

Примеры использования функции itertools.accumulate():

import itertools

# суммирование элементов списка нарастающим итогом
numbers = [1, 2, 3, 4, 5]
list(itertools.accumulate(numbers))
[1, 3, 6, 10, 15]

# произведение элементов списка нарастающим итогом
import operator
numbers = [1, 2, 3, 4, 5]
list(itertools.accumulate(numbers, func=operator.mul))
[1, 2, 6, 24, 120]

# сумма элементов списка нарастающим итогом с начальным значением 100
numbers = [1, 2, 3, 4, 5]
list(itertools.accumulate(numbers, initial=100))
[100, 101, 103, 106, 110, 115]

Похожие посты

Фильтрация элементов итератора с помощью bool-списка функции itertools.compress()

Пропуск не нужных элементов последовательности с помощью itertools.dropwhile()

Возвращение элементов списка пока условие истинно с помощью itertools.takewhile()

Бесконечные итераторы в Python itertools.count(), cycle(), repeat()

Комментариев нет.