эта часть вашего кода
[sum(lists[0:x:1]) for x in range(0, length+1)]
создает новый список, начиная с первого элемента lists
до (и исключая) x
-го элемента вашего списка (см., Например, Python Нарезка списка ). тогда он берет sum
поверх него.
, поэтому он без необходимости создает несколько списков и производит ненужные суммы (он может сохранить сумму до элемента x
в памяти и просто добавить следующий элемент - как и большинство решений, представленных здесь).
вы получаете это бесплатно с itertools.accumulate
уже:
from itertools import accumulate
lists = [10, 20, 30, 40, 50]
print(list(accumulate(lists)))
# [10, 30, 60, 100, 150]