Удобнее переписать вашу distance()
функцию, чтобы взять два (x, y)
кортежа в качестве параметров:
def distance(p0, p1):
return math.sqrt((p0[0] - p1[0])**2 + (p0[1] - p1[1])**2)
Теперь вы хотите перебрать все пары точек из вашего списка fList
. Для этого удобна функция iterools.combinations()
:
min_distance = distance(fList[0], fList[1])
for p0, p1 in itertools.combinations(fList, 2):
min_distance = min(min_distance, distance(p0, p1))
Альтернативой является определение distance()
для принятия пары точек в одном параметре
def distance(points):
p0, p1 = points
return math.sqrt((p0[0] - p1[0])**2 + (p0[1] - p1[1])**2)
и использовать параметр key
для встроенной функции min()
:
min_pair = min(itertools.combinations(fList, 2), key=distance)
min_distance = distance(min_pair)