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

Python列表按连续元素差值小于35规则分组的实现方法求助

实现代码

你可以先封装一个单列表的分组工具函数,再遍历字典所有值执行分组逻辑即可,完整可运行代码如下:

def group_y_list(raw_list, threshold=35):
    if not raw_list:
        return []
    # 初始化结果,第一个元素先放入第一个分组
    result = [[raw_list[0]]]
    for num in raw_list[1:]:
        # 取当前最后一个分组的最后一个元素做差值对比
        last_num = result[-1][-1]
        if abs(num - last_num) < threshold:
            result[-1].append(num)
        else:
            result.append([num])
    return result

# 示例输入数据
data = {0: [177, 188, 201, 209, 226, 233, 250, 258, 273, 282, 299, 307, 323, 330, 347, 355, 370, 379, 395, 403, 420, 428, 444, 452, 468, 476, 492, 500, 517, 524, 541, 549, 565, 573, 589, 597, 613, 621, 637, 651, 753, 761, 776], 1: [477, 489, 490]}

# 对字典每个值执行分组
processed_data = {k: group_y_list(v) for k, v in data.items()}

# 输出验证
print(processed_data)

输出结果

运行后输出和要求的格式完全一致:

{0: [[177, 188, 201, 209, 226, 233, 250, 258, 273, 282, 299, 307, 323, 330, 347, 355, 370, 379, 395, 403, 420, 428, 444, 452, 468, 476, 492, 500, 517, 524, 541, 549, 565, 573, 589, 597, 613, 621, 637, 651], [753, 761, 776]], 1: [[477, 489, 490]]}

补充说明

  • 阈值threshold默认设为35,可根据实际业务需求灵活调整
  • 代码中加了绝对值判断,即使y坐标列表不是升序排列也能正常运行,如果你确定输入都是升序,可以去掉abs()提升少量性能

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 19:18:00