Суммирование элементов списка с накоплением на основе списка индексов

Исходный список:

list_a = [100, 5, 1, 2, 200, 3, 1, 300, 6, 6]

Список индексов:

ind_list = [0, 4, 7]

Требуется создать третий список, который будет содержать сумму первого списка с накоплением и приводиться в исходное состояние на каждом индексе из списка ind_list:

res_list = [100, 105, 106, 108, 200, 203, 204, 300, 306, 312]

Одно из элегантных решений с использованием numpy:

cs = np.cumsum(list_a)
for i in ind_list:
    if i==0:
        continue
    cs[i:]-=cs[i-1]

Результат:

cs
>>array([100, 105, 106, 108, 200, 203, 204, 300, 306, 312])

Спасибо Binyamin Even.