Опубликован: 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()
Комментариев нет.