如何在python中获得给定列表中彼此最近的点?

2024-09-28 05:19:57 发布

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

from math import hypot

p = [ (0,0),(1,1),(2,3),(4,5)]
def dist(p1,p2):
    x1,y1= p1
    x2,y2= p2
    return hypot(x2-x1,y2-y1)

from itertools import combinations

distances = [dist(*pair) for pair in combinations( p,2)]

在这一步之后我不知道该怎么做


Tags: fromimportreturndistdefmathx1x2
3条回答

一种方法是在函数中引入一点杂质-

from math import hypot

p = [ (0,0),(1,1),(2,3),(4,5)]
distances = {}
def dist(p1,p2):
    x1,y1= p1
    x2,y2= p2
    distances[((x1,y1),(x2,y2))] = hypot(x2-x1,y2-y1)

from itertools import combinations

[dist(*pair) for pair in combinations( p,2)]
print(distances)

min_dist = min(distances, key=distances.get)
print("The minimum distance points are {} and {}".format(min_dist[0], min_dist[1]))

我想这就是你要找的

尝试构建一个包含(pair, dist)键值元组的字典。
然后找到距离值最小的元组

import operator as op


pair_distances = {pair: dist(*pair) for pair in combinations(p, 2)}
min(pair_distances.items(), key=op.itemgetter(1))
#(((0, 0), (1, 1)), 1.4142135623730951)
1. distances = [[dist(*pair),pair]  for pair in combinations( p,2)]
2. print sorted(distances)[0][1]

代码行1。用成对的细节定义距离列表。它将是一个列表列表。
代码行2。对距离列表排序。python默认使用第一个基于索引的排序。因此,您将得到带距离的排序数组。所以第[0]个元素将是最小的[1] 是它的要点。
这是不更准确地做这种问题。但是 希望这对你有帮助

相关问题 更多 >

    热门问题