Использование itertools.zip_longest
с аргументом fillvalue
:
sum(x*y for x, y in zip_longest(A, B, fillvalue=0))
Код :
from itertools import zip_longest
A = [12, 0, 3, 7, 2]
B = [1, 2, 5, 4]
print(sum(x*y for x, y in zip_longest(A, B, fillvalue=0)))
# 55
, поскольку fillvalue
является0, и это не вызывает никаких изменений в операции (2 * 0 = 0), вы также можете просто использовать zip
:
sum(x*y for x, y in zip(A, B))
A
функциональный подход довольно питонический (при условии, что
fillvalue
по-прежнему равен 0):
from operator import mul
A = [12, 0, 3, 7, 2]
B = [1, 2, 5, 4]
print(sum(map(mul, A, B)))
# 55