钱多多先森 2021-12-27 17:04 采纳率: 0%
浏览 56

python list列表根据元素间的距离关系,分成指定的几组。

请问下,一个list是这样的

  a_list=[220, 221, 221.6, 399, 300.3, 310, 219, 219.9, 400, 401]。

我想要类似于聚类的方式,将这一个列表,根据他们间的距离,分成三份,该如何做啊?

最后变成这一样子:


[[219, 219.9, 220, 221, 221.6], [300.3, 310], [399, 400, 401]]   

就满意了。谢谢

  • 写回答

4条回答 默认 最新

  • 陈.py 2021-12-27 17:42
    关注
    
    def cluster(data, maxgap):
        data.sort()
        groups = [[data[0]]]
        for x in data[1:]:
            if abs(x - groups[-1][-1]) <= maxgap:
                groups[-1].append(x)
            else:
                groups.append([x])
        return groups
    
    
    if __name__ == '__main__':
        data = [220, 221, 221.6, 399, 300.3, 310, 219, 219.9, 400, 401]
        maxgap = 15
        print(cluster(data, maxgap))
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 12月27日