Вам нужна другая функция. itertools.accumulate()
генерирует все промежуточные результаты, которые functools.reduce()
производит под обложками:
>>> from itertools import accumulate
>>> nums = [0, 34, 2, 2]
>>> list(accumulate(nums))
[0, 34, 36, 38]
По умолчанию используется сложение. Или вы можете вместо этого передать любую другую функцию с двумя аргументами:
>>> list(accumulate(nums, lambda a, b: a + b)) # same as the default
[0, 34, 36, 38]
>>> list(accumulate(nums, lambda a, b: a + 2*b))
[0, 68, 72, 76]
Если вы не хотите 0 в начале, вам придется избавиться от этого самостоятельно; например,
>>> f = accumulate(nums)
>>> next(f) # throw out first result
0
>>> list(f) # and make a list out of what remains
[34, 36, 38]