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

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日

悬赏问题

  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大
  • ¥15 Oracle中如何从clob类型截取特定字符串后面的字符
  • ¥15 想通过pywinauto自动电机应用程序按钮,但是找不到应用程序按钮信息
  • ¥15 如何在炒股软件中,爬到我想看的日k线
  • ¥15 seatunnel 怎么配置Elasticsearch
  • ¥15 PSCAD安装问题 ERROR: Visual Studio 2013, 2015, 2017 or 2019 is not found in the system.
  • ¥15 (标签-MATLAB|关键词-多址)
  • ¥15 关于#MATLAB#的问题,如何解决?(相关搜索:信噪比,系统容量)
  • ¥500 52810做蓝牙接受端
  • ¥15 基于PLC的三轴机械手程序