You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何不使用循环从给定列表逐个移除末尾元素生成对应子列表

无循环生成递增子列表集合实现方案

需求说明

给定已排序的自然数列表,例如 [0, 1, 2, 3, 4],不使用显式循环、仅调用内置函数,生成逐个扩展末尾元素的子列表集合,预期输出如下:

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

最优实现(Python)

全程仅调用内置函数即可完成,无需手写任何循环逻辑,代码如下:

# 示例输入
input_lst = [0, 1, 2, 3, 4]
# 核心实现代码
result = list(map(lambda x: input_lst[:x+1], range(len(input_lst))))

实现说明

  • 无任何显式的for/while循环,仅用到len()、range()、map()、list()四个Python原生内置函数
  • 运行逻辑:
    • 用len(input_lst)获取输入列表总长度,确定需要生成的子列表总数
    • 用range(len(input_lst))生成从0到长度-1的整数序列,对应子列表的切片索引偏移
    • 用map遍历整数序列,对每个偏移值执行切片操作input_lst[:x+1],拿到前x+1个元素组成的子列表
    • 最后用list()将map迭代器转为列表,直接得到符合要求的输出结果
  • 该实现的时间复杂度和需求本身的性能下限完全一致,为O(n²)(n为输入列表长度,总共需要生成n(n+1)/2个元素),无额外性能损耗

内容的提问来源于stack exchange,提问作者loadbox

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 02:36:04