Как суммировать значения в списке

Есть лист a. Значения a = [10,15,12,16,9,5] Как получить a = [10,25,37,53,62,67](прибавляя предудыщее число) возможно через np.sum(a) или типа того?


Ответы (3 шт):

Автор решения: Владислав Харламов

Первый вариант:

from itertools import accumulate

ans = [acc for acc in accumulate([10,15,12,16,9,5])]
print(ans) #[10, 25, 37, 53, 62, 67]

Второй вариант:

import numpy as np

ans = np.cumsum([10,15,12,16,9,5])
print(ans) # array([10, 25, 37, 53, 62, 67], dtype=int32)
→ Ссылка
Автор решения: Danis

Вариант с изменением начального списка:

for i in range(1, len(arr)):
    arr[i] += arr[i - 1]

Вариант без изменения начального списка:

for i in range(1, len(arr) + 1):
    new_arr.append(sum(arr[:i])) 

В одну строку:

new_arr = [sum(arr[:i]) for i in range(1, len(arr) + 1)]
→ Ссылка
Автор решения: Qwertiy

При наличии питона 3.8 можно исхитриться и записать в одну строку: песочница

a = [10,15,12,16,9,5]
b = [y := y + x if i else x for i,x in enumerate(a)]
print(b)

Впрочем, код так себе.

→ Ссылка