如何在图上找到n个最近坐标的列表

2024-03-29 14:25:22 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的问题,我有一个主列表,其中是数据的子列表一个字符串,它告诉列表的类型,一个x坐标和一个y坐标。如何使用欧几里得距离函数的键查找主_列表中n个最近的字符串,例如:

my_location = ['a', .59, .59] master_list = [['a', .5, .5], ['b', .3, .2], [a, .4, .4], ['b', .45, .45], ['a', .6, .6], ['b', .55, .55]] input: function(3, my_location, master_list) output: [['a', .6, .6], ['b', .55, .55], ['a', .5, .5]]

函数的键应该类似于:key=sqrt((x1-x2)*2+(y1-y2)*2


Tags: 数据key函数字符串master距离类型列表
1条回答
网友
1楼 · 发布于 2024-03-29 14:25:22
from math import sqrt

location = ['a', .59, .59]
master_list = [['a', .5, .5],
               ['b', .3, .2],
               ['a', .4, .4],
               ['b', .45, .45],
               ['a', .6, .6],
               ['b', .55, .55]]


def get_neighbours(distance, location, locations):
    neighbours = []    
    for loc in locations:
        if sqrt((location[1] - loc[1])**2 + (location[2] - loc[2])**2) < distance:
            neighbours.append(loc)
    return neighbours

print get_neighbours(3, location, master_list)

如果你想快点,你应该看看2D碰撞检测的东西。。轴线对齐的边界框、四叉树、清扫和修剪等。。在

你可以做一个快速测试来消除遥远的节点,如果你有很多节点,这可能是值得做的(否则保持代码简单,不要过早优化):

^{pr2}$

如果这是家庭作业,那你就不是在帮自己找别人帮你做:)

相关问题 更多 >