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

未排序数值列表按相邻元素差值聚类 零值序列未单独分组问题求解

问题原因

你定义的分组规则是相邻元素差值不超过2,但判断逻辑里只检查了y - x > 2的正向差值场景,未覆盖负向差值的情况:比如原列表中72之后是0,0 -72 = -72,远小于2,因此不会触发切片,导致72和后续的0被分到同一组。

解决方案

仅需要修改slice_when方法传入的判断条件,改为计算相邻元素差值的绝对值是否大于2即可:

def slice_when(predicate, iterable):
    i, x, size = 0, 0, len(iterable)
    while i < size-1:
        if predicate(iterable[i], iterable[i+1]):
           yield iterable[x:i+1]
           x = i + 1
        i += 1
    yield iterable[x:size]

tst = [1,3,4,6,8,22,24,25,26,67,68,70,72,0,0,0,0,0,0,0,4,5,6,36,38,36,31]
# 修改判断条件为差值绝对值大于2时切片
slices = slice_when(lambda x,y: abs(y - x) > 2, tst)
whola = list(slices)
print(whola)

运行结果

[[1, 3, 4, 6, 8], [22, 24, 25, 26], [67, 68, 70, 72], [0, 0, 0, 0, 0, 0, 0], [4, 5, 6], [36, 38, 36], [31]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 14:24:07