如何从给定列表中生成较小的列表,在没有循环的情况下从末尾一个一个地删除元素?

How to generate smaller lists from a given list removing elements from the end one by one without loop?

给定一个排序的自然数列表,例如。 [0, 1, 2, 3, 4],我正在寻找一种最佳方式(无循环),使用内置函数生成子列表列表,从一端一个接一个地弹出元素,如:

[[0], [0, 1], [0, 1, 2], [0, 1, 2, 3], [0, 1, 2, 3, 4]]

不要认为有任何内置函数可以在没有循环的情况下执行此操作。也就是说,放入单行列表理解很简单:

inn = [0, 1, 2, 3, 4]

out = [inn[:i] for i in range(1, len(inn) + 1)]

你可以选择 recursion:

def add_ele(l,index,new_l=[]):
    if len(l)==index:
        return new_l
    else:
        new_l.append(l[:index])
        return add_ele(l,index+1,new_l)
l=[0, 1, 2, 3, 4]
print(add_ele(l,1))

一条线:

lambda nums: [nums[:n + 1] for n in range(len(nums))]