Поочередное суммирование элементов списка Python
Дан список из чисел A. На выходе необходимо получить список B с суммой всех предыдущих чисел списка A включая число итерируемого индекса.
Например:
На входе:
А=[0,1,2,3,4]
На выходе:
B=[0,1,3,6,10]
Ответы (2 шт):
Автор решения: Zhihar
→ Ссылка
вариант 1:
B = [sum(A[:i + 1]) for i in range(len(A))]
вариант 2:
s = 0
B = [s := s + v for v in A]
вариант 3:
from functools import reduce
B = reduce(lambda r, v: r + [r[-1] + v] if r else [v], A, [])
вариант 4:
B = list(map(lambda v: sum(A[:v[0]]) + v[1], enumerate(A)))
или
*B, = map(lambda v: sum(A[:v[0]]) + v[1], enumerate(A))
вариант 5:
def func(A):
return (func(A[:-1]) + [sum(A)]) if A else []
B = func(A)
вариант 6:
from itertools import accumulate
B = list(accumulate(A))
или
from itertools import accumulate
*B, = accumulate(A)
вариант 7:
import numpy
B = numpy.add.accumulate(A)
Автор решения: TigerTV.ru
→ Ссылка
Используйте accumulate:
from itertools import accumulate
A = [0,1,2,3,4]
*B, = accumulate(A)
print(B) # [0,1,3,6,10]