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
相关产品推荐
相关产品推荐

