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

Python如何实现列表长度逐次递增的连续子列表提取

Python实现按递增长度拆分连续非重叠子列表

拆分规则

从输入列表起始位置开始按顺序拆分,规则如下:

  • 拆分出的子列表为连续、非重叠的片段
  • 第1个子列表固定长度为1,第2个长度为2,后续每一个子列表的长度较上一个+1
  • 拆分终止条件:当前剩余未拆分的元素数量,不足以凑齐下一个子列表要求的长度时,直接停止,剩余不足长度的元素直接丢弃

示例参考

示例1
输入列表:[3, 2, 3, 4, 3, 1],列表总长度为6
预期输出:[[3], [2, 3], [4, 3, 1]]
拆分过程:依次取长度1、2、3的片段,取完后无剩余元素,所有符合长度要求的片段全部返回

示例2
输入列表:[3, 2, 3, 4, 3],列表总长度为5
预期输出:[[3], [2, 3]]
拆分过程:取完长度1、2的片段后,剩余未拆分元素仅1个,达不到下一个子列表要求的长度3,停止拆分

实现代码

def split_incremental_sublists(input_list: list) -> list:
    result = []
    start_index = 0
    current_segment_len = 1
    total_len = len(input_list)
    # 循环判断剩余元素是否足够凑齐当前要求长度的片段
    while start_index + current_segment_len <= total_len:
        # 切片截取对应长度的连续片段加入结果
        result.append(input_list[start_index : start_index + current_segment_len])
        # 更新起始索引到下一个未拆分位置
        start_index += current_segment_len
        # 下一个片段长度+1
        current_segment_len += 1
    return result

效果验证

直接运行测试用例即可校验逻辑正确性:

# 验证示例1
print(split_incremental_sublists([3, 2, 3, 4, 3, 1]))
# 运行输出: [[3], [2, 3], [4, 3, 1]]

# 验证示例2
print(split_incremental_sublists([3, 2, 3, 4, 3]))
# 运行输出: [[3], [2, 3]]

内容的提问来源于stack exchange,提问作者Faizahamed M. Akkiwat

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 05:48:28