itertools.accumulate как упомянуто Джон Клементс является лучшим способом сделать. Однако, в случае, если вы хотите явный способ сделать это, здесь идет:
lst_old = [1, 2, 3, 4, 5]
sum = 0
lst_new = []
for item in lst_old:
sum += item
lst_new.append(sum)
Основное преимущество это, вы можете обернуть его в функцию, и если есть какой-либо трансформации или должны быть выполнены проверки, может быть добавлен.
Например, предположим, что вы хотите, чтобы остановить функция будет держать после предела, следующее поможет:
def accumulate_items(lst_old, limit=0):
sum = 0
output_list = []
for item in lst_old:
sum += item
output_list.append(sum)
if limit and sum > limit:
break
return output_list
Гибкость будет безгранична, если есть любое преобразование или операцию нужно делать здесь , Есть предварительное условие, которое необходимо установить? Преуспевать. У вас есть пост-состояние, которое необходимо протестировать? Преуспевать. Довольно огромный список и хотел создать генераторное решение, как и itertools.accumulate? Преуспевать. Нужно добавить проверку или обработку исключений? Преуспевать.
Однако трансформации и просто не накапливаются? Предыдущий ответ - лучший. Использование суммы со списком индексов довольно медленно, как порядок сложности небо ракет.
Чей документ есть: https://docs.python.org/3/library/itertools.html#itertools.accumulate – Guillaume