Как найти минимальную разницу смещения координат из списка объектов?

Имеется такой синтетический пример:

import pyautogui
from typing import List, Tuple, Type

from pyrect import Box


def main():
    list_locates: List[Tuple[Type[int], Type[int], Type[int], Type[int]]]
    test_box: Box

    list_locates = [Box(100, 100, 50, 50), Box(120, 120, 50, 50), Box(150, 150, 50, 50), Box(110, 210, 50, 50)]

    # Испытуемый объект, со смещением в 1 пиксель, в позиции координат
    test_box = Box(101, 100, 50, 50)

    if test_box not in list_locates:
        # Как найти минимальное расхождение с координатами местоположения элементов Box?
        print(True)


if __name__ == '__main__':
    main()

Как найти максимальную разницу по одной или двум осям? Может в наборе базовых библиотек питона есть что то, готовое для решения подобной задачи? Или в pyautogui

У меня получилось такое решение:

import pyautogui
from typing import List, Tuple, Type
from pyrect import Box


def main():
    list_locates: List[Tuple[Type[int], Type[int], Type[int], Type[int]]]
    test_box: Box

    list_locates = [
        Box(100, 100, 50, 50),
        Box(120, 120, 50, 50),
        Box(150, 150, 50, 50),
        Box(110, 210, 50, 50)
    ]

    # Испытуемый объект, со смещением в 1 пиксель, в позиции координат
    test_box = Box(101, 100, 50, 50)

    if test_box not in list_locates:

        threshold: int = 50
        list_diff = []

        for item in list_locates:
            diff = abs(test_box[0] - item[0]), abs(test_box[1] - item[1])
            if threshold >= diff[0] and threshold >= diff[1]:
                list_diff.append(diff)

        print(list_diff)
        print(min(list_diff))
        print(max(list_diff))


if __name__ == '__main__':
    main()

[(1, 0), (19, 20), (49, 50)]
(1, 0)
(49, 50)

P.S. Есть что то, в питоне из встроенного, для решения подобных вопросов?


Ответы (0 шт):