Вы должны привыкнуть к виду range () в python, если вы собираетесь манипулировать индексами и индексами (что обычно не очень pythoni c).
Большинство из время, когда есть способ обрабатывать списки, не проходя через индексы.
Это не очень хороший пример, но он иллюстрирует подход, который можно использовать:
lst = [1,2,3,4,5]
def subLists(arr):
if not arr: return
for sl in subLists(arr[:-1]): yield sl
yield arr
output:
for sublist in subLists(lst):
print(sublist)
[1]
[1, 2]
[1, 2, 3]
[1, 2, 3, 4]
[1, 2, 3, 4, 5]
Кроме того, вы можете избежать использования crypti c (len (lst)), используя перечисление:
for n,_ in enumerate(lst,1):
print(lst[:n])
Вы также можете использовать накопление из itertools:
from itertools import accumulate
for s in accumulate([i] for i in lst):
print(s)