Трудности с уменьшением случаются, когда у вас неверная карта.
Давайте возьмем выражение:
value = sum(map(lambda (x,y): x*y, zip(a, b)))
Карта - это трансформация. Нам нужно преобразовать кортежи в простые плоские значения.
В вашем случае это будет выглядеть так:
map(lambda x: x[0]*x[1], zip(a,b))
И затем, если вы хотите выразить sum
через reduce
- это будет выглядеть так:
reduce(lambda x,y: x + y, map)
Итак, вот пример :
a = [1,2,3]
b = [4,5,6]
l = zip(a,b)
m = map(lambda x: x[0]*x[1], l)
r = reduce(lambda x,y: x + y, m)