У меня есть объект, представляющий прямоугольник в python, который выглядит следующим образом:
class cords:
x_start = -1
x_end = -1
y_start = -1
y_end = -1
def __init__(self, x_start, x_end, y_start, y_end):
self.x_start = x_start
self.x_end = x_end
self.y_start = y_start
self.y_end = y_end
Теперь у меня есть список cords
с именем new_cords
со значениями, подобными этому:
x_start: 508, x_end: 530, y_start: 843, y_end: 869
x_start: 508, x_end: 530, y_start: 843, y_end: 870
x_start: 401, x_end: 451, y_start: 582, y_end: 620
x_start: 467, x_end: 513, y_start: 583, y_end: 621
x_start: 466, x_end: 512, y_start: 634, y_end: 672
x_start: 533, x_end: 585, y_start: 534, y_end: 561
x_start: 528, x_end: 576, y_start: 583, y_end: 622
Я хочу удалить из new_cords
прямоугольников, которые находятся на расстоянии 3
друг от друга, чтобы уменьшить сходные прямоугольники.
Я написал это:
for c_out in new_cords:
for c_in in new_cords:
if abs(c_out.x_start - c_in.x_start) < 3 or abs(c_out.x_end - c_in.x_end) < 3 or abs(c_out.y_start - c_in.y_start) < 3 or abs(c_out.y_end - c_in.y_end) < 3:
new_cords.remove(c_out)
Но я получаю исключения, потому что он удаляет несуществующие значения, и я не получаю правильный список.
Что не так с моим алгоритмом?
РЕДАКТИРОВАТЬ: алгоритм должен удалять только один из них. Например, A и B близки, поэтому мы должны удалить A (или B), но не оба из них