如何编写可遍历列表所有连续子范围的函数 附需求示例
def iterate_continuous_subranges(lst): # 遍历所有可能的左边界下标 for i in range(len(lst) - 1): # 遍历所有可能的右边界切片值(Python切片左闭右开) for j in range(i + 2, len(lst) + 1): current_subrange = lst[i:j] # 此处替换为你需要对每个子范围执行的操作 print(current_subrange)
测试效果
传入示例列表[1,2,3,4]调用函数:
example = [1,2,3,4] iterate_continuous_subranges(example)
输出结果完全匹配需求:
- [1, 2]
- [1, 2, 3]
- [1, 2, 3, 4]
- [2, 3]
- [2, 3, 4]
- [3, 4]
逻辑说明
- 外层循环的左边界
i最大取值为列表长度减2,保证后续至少能取到2个元素 - 内层循环的右边界
j从i+2开始取值,保证子范围长度至少为2,最大取值为列表总长度,此时子范围包含从i到列表末尾的所有元素 - 如果需要同时遍历长度为1的子范围,只需把内层循环的起始值改为
i+1即可
内容的提问来源于stack exchange,提问作者Ceiun
相关产品推荐
相关产品推荐

