python - 对具有最接近值的整数列表进行分组

标签 python list math grouping

我有一个列表:

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

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

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

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

关于python - 对具有最接近值的整数列表进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10016802/

相关文章:

python - 减少从 MongoDB 加载 Pandas 数据帧所用的内存

python - 如何将累积输出存储在列表中?

JAVA 四舍五入到最接近的数字

python - 为什么我需要 'b' 来使用 Base64 对字符串进行编码?

python - 在python中解码这种类型的字符串

C# 指向列表<T> (WinForms)

java - 过滤映射并返回键列表

javascript - 如何改进这个 JS Parallax 类型的数学方程?

JavaScript:如何获取饼图的中心?

python - 如何获取子目录名称列表