以下是一个解决方法的代码示例:
import math
def distance(point1, point2):
# 计算两点之间的距离
x1, y1 = point1
x2, y2 = point2
return math.sqrt((x2 - x1)**2 + (y2 - y1)**2)
def closest_point(points, target):
# 初始化最小距离和最近点
min_distance = float('inf')
closest = None
# 遍历每个点
for point in points:
# 计算当前点到目标点的距离
curr_distance = distance(point, target)
# 如果当前距离小于最小距离,更新最小距离和最近点
if curr_distance < min_distance:
min_distance = curr_distance
closest = point
return closest
def closest_points_by_group(groups, target):
closest_points = []
# 遍历每个组
for group in groups:
# 获取当前组的最近点
closest = closest_point(group, target)
closest_points.append(closest)
return closest_points
# 示例使用
groups = [[(1, 2), (3, 4), (5, 6)],
[(7, 8), (9, 10), (11, 12)],
[(13, 14), (15, 16), (17, 18)]]
target = (10, 10)
result = closest_points_by_group(groups, target)
print(result)
在这个示例中,我们首先定义了一个distance
函数来计算两个点之间的距离。然后,我们定义了一个closest_point
函数,该函数接受一个点列表和目标点作为输入,并返回最近的点。最后,我们定义了一个closest_points_by_group
函数,该函数接受一个点组列表和目标点作为输入,并返回每个组中最近的点的列表。
在示例的最后部分,我们定义了一个包含三个组的点列表,以及一个目标点。我们调用closest_points_by_group
函数,并将结果打印出来。输出将是每个组中最近的点的列表。