将具有最接近值的整数列表分组 [英] Grouping a list of integers with nearest values

查看:76
本文介绍了将具有最接近值的整数列表分组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个列表:

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

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

how can I group nearest values with a dynamic gap, and create a tuple like this, what is the fastest method? :

[(23, 24, 25), (67, 69), (102, 109, 110)]

推荐答案

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]]

首先,我们计算顺序元素之间的平均差异,然后将差异小于平均值的元素分组在一起.

Fist we calculate an average difference between sequential elements and then group together elements whose difference is less than average.

这篇关于将具有最接近值的整数列表分组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆