Ich habe eine Funktion, die eine Liste von Rects ausdruckt wie dieseWie findet man ein Rect, das einem gegebenen Rect am nächsten ist, aus einer Liste?
[<rect(394, 28, 80, 100)>, <rect(394, 126, 80, 100)>, <rect(394, 224, 80, 100)>, <rect(472, 28, 80, 100)>, <rect(472, 126, 80, 100)>]
und ich bin für eine Art und Weise oben, um in einem bestimmten Rect die nächste Rect aus der Liste übereinstimmen.
Zum Beispiel würde ein gegebenes Rect wie dieses <rect(377, 231, 50, 70)>
mit <rect(394, 224, 80, 100)>
übereinstimmen und es ausdrucken.
Ich habe versucht, dass mit Tupel und Liste von Tupeln tun, indem Sie min Funktion wie diese
temp_list = [(1, 3), (4, 9), (5, 7), (3, 5), (9, 4), (8, 4), (6, 1)]
temp_tuple = (5, 11)
nearest = min(temp_list, key=lambda c: (c[0] - temp_tuple[0]) ** 2 + (c[1] - temp_tuple[1]) ** 2)
print(nearest)
aber ich weiß nicht, wie ich würde es für Rect Datentyp zu arbeiten.
Sie haben die richtige Idee von dem, was in Python, um Ihr Problem zu tun, ist, dass es nicht gut ist definiert, was der Abstand zwischen zwei Rects ist. Sollte es die Entfernung zwischen den Zentren sein? Der durchschnittliche Abstand zwischen den Ecken? Der durchschnittliche Abstand zwischen den Seiten? –