Python 3.12+Числа и математикафункция
math.sumprod
произведение
Сумма попарных произведений двух последовательностей (скалярное произведение, 3.12+).
Синтаксис
math.sumprod(...)
В отличие от zip, разная длина последовательностей — не молчаливое усечение, а ValueError. Для float результат обычно точнее, чем sum(a * b for a, b in zip(p, q)), потому что накопление ведётся с повышенной точностью; для int арифметика остаётся целочисленной и точной.
Примеры
import math
print(math.sumprod((1, 2, 3), (4, 5, 6))) # → 32
print(math.sumprod([100, 250, 30], [2, 1, 5])) # → 600
print(math.sumprod([], [])) # → 0
print(math.sumprod([1, 2, 3], [4, 5, 6]) == sum(x * y for x, y in zip([1, 2, 3], [4, 5, 6]))) # → True
print(math.sumprod([1, 2, 3], [4, 5])) # → ValueError
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности