Если я правильно понимаю ваш вопрос, я думаю, что itertools.accumulate
удовлетворит ваши потребности в любой операции:
import itertools
import operator
nums = [5, 3, 4, 2, 1]
# Addition
print(list(itertools.accumulate(nums, operator.add)))
# [5, 8, 12, 14, 15]
# Subtraction
print(list(itertools.accumulate(nums, operator.sub)))
# [5, 2, -2, -4, -5]
# Multiplication
print(list(itertools.accumulate(nums, operator.mul)))
# [5, 15, 60, 120, 120]
В operator
определено много других операций.Если вам не нужны промежуточные результаты, используйте functools.reduce
.Например, вычитание:
import functools
import operator
nums = [5, 3, 4, 2, 1]
print(functools.reduce(operator.sub, nums))
# -5