使用最接近的值对整数列表进行分组

pyl*_*ver 6 python math grouping list

我有一个清单:

d = [23,67,110,25,69,24,102,109]
Run Code Online (Sandbox Code Playgroud)

如何将最近的值与动态间隙分组,并创建这样的元组,最快的方法是什么?:

[(23,24,25),(67,69),(102,109,110)]
Run Code Online (Sandbox Code Playgroud)

geo*_*org 17

喜欢

d = [23,67,110,25,69,24,102,109]

d.sort()

diff = [y - x for x, y in zip(*[iter(d)] * 2)]
avg = sum(diff) / len(diff)

m = [[d[0]]]

for x in d[1:]:
    if x - m[-1][0] < avg:
        m[-1].append(x)
    else:
        m.append([x])


print m
## [[23, 24, 25], [67, 69], [102, 109, 110]]
Run Code Online (Sandbox Code Playgroud)

我们计算连续元素之间的平均差异,然后将差异小于平均值的元素组合在一起.