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

如何修改分块函数以生成数值列表的全部连续重叠区间?

生成重叠连续区间的解决方法

嘿,要得到你想要的这种重叠相邻区间,核心是调整遍历序列时的步长——原来的代码每次跳2个位置(和块大小一致),所以会跳过中间的重叠点,现在我们改成每次只移动1个位置就好啦。

方法一:修改通用分块函数

如果你还想保留chunker这个通用函数,只需要把遍历的步长从size改成1,同时调整范围避免越界:

def chunker(seq, size):
    # 步长改为1,确保每次移动一个位置实现重叠;范围限制到len(seq)-size+1,避免最后一块长度不足
    return (seq[pos:pos + size] for pos in range(len(seq) - size + 1))

l1 = [0,1000,5000,10000,20000,30000,40000,50000]
for group in chunker(l1, 2):
    print(group)

运行这段代码就会输出你想要的结果:

[0, 1000]
[1000, 5000]
[5000, 10000]
[10000, 20000]
[20000, 30000]
[30000, 40000]
[40000, 50000]

方法二:更直观的针对性写法

如果你的需求只是生成两两相邻的重叠对,不需要通用分块功能,直接遍历索引会更清晰:

l1 = [0,1000,5000,10000,20000,30000,40000,50000]
for i in range(len(l1) - 1):
    print([l1[i], l1[i+1]])

这个写法直接取每个元素和它的下一个元素组成对,逻辑一目了然。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:11:23