在包含列表的列表中查找列表中最接近的匹配项

SUB*_*0DH 0 python python-2.7

我有一个包含两个元素的列表,如下所示:

list_a = [27.666521, 85.437447]
Run Code Online (Sandbox Code Playgroud)

和另一个这样的列表:

big_list = [[27.666519, 85.437477], [27.666460, 85.437622], ...]
Run Code Online (Sandbox Code Playgroud)

我想找到list_a内部最接近的匹配list_b.

例如,这里最接近的匹配是[27.666519, 85.437477].

我怎么能做到这一点?

我在这里找到了一个类似的问题,用于找到数组中字符串的最接近匹配但是无法为上述问题类似地重现它.

列表中的元素是地球上各点的坐标.

Sve*_*ach 10

从你的问题来看,很难说你想如何测量距离,所以我简单地假设你的意思是欧几里德距离.

您可以使用该key参数min():

from functools import partial

def distance_squared(x, y):
    return (x[0] - y[0])**2 + (x[1] - y[1])**2

print min(big_list, key=partial(distance_squared, list_a))
Run Code Online (Sandbox Code Playgroud)