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

Python如何实现列表按相邻差值<3且元素数≥7分组求区间索引

实现方法

你的现有代码直接过滤了不符合要求的差值,丢失了原始索引信息,因此无法定位区间的起止位置。你可以按以下逻辑实现:

首先遍历差值数组,记录连续符合差值<3.0的区间,再筛选出区间内元素数量>=7的结果即可:

values = [73.0, 143.0, 323.0, 324.0, 325.0, 325.0, 325.0, 325.0, 325.5,
          325.5, 326.0, 326.0, 326.0, 326.0, 406.0, 406.5, 432.5, 433.0,
          433.5, 434.5, 435.0, 435.0, 436.0, 436.5, 437.5, 438.0]
diff_ar = [70.0, 180.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.5, 0.0, 0.5, 0.0,
           0.0, 0.0, 80.0, 0.5, 26.0, 0.5, 0.5, 1.0, 0.5, 0.0, 1.0, 0.5,
           1.0, 0.5]

result = []
current_start = 0

for i in range(len(diff_ar)):
    if diff_ar[i] >= 3.0:
        # 计算当前连续区间的元素总数
        element_count = i - current_start + 1
        if element_count >=7:
            result.append((current_start, i))
        # 重置下一个区间的起始位置
        current_start = i + 1
# 遍历结束后检查最后一段连续区间是否符合要求
element_count = len(values) - current_start
if element_count >=7:
    result.append((current_start, len(values)-1))

print(result)

运行后输出结果和你期望的一致:

[(2, 12), (16, 24)]
逻辑说明
  • 差值数组的索引i对应values[i]和values[i+1]的差值,因此连续k个符合要求的差值对应的values区间为[current_start, i],元素总数为i - current_start + 1
  • 遇到差值>=3.0时即代表当前连续区间中断,此时判断长度是否符合要求,符合则加入结果
  • 遍历结束后需要额外判断最后一段连续区间,避免漏掉末尾符合要求的分组

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 15:18:04