Эффективное манипулирование списком декартовых координат в Python

Фон:

Я пишу программу, которая обрабатывает большие объемы данных, связанных с сетями вершин различных правильных форм. У меня есть рабочий генератор, который выдает список декартовых координат, соответствующих вершинам указанных фигур, на основе диапазона пользовательских параметров ввода. Затем данные передаются в фильтры, которые очищают повторяющиеся записи, сортируют данные и различные другие функции, откуда очищенные данные поступают в модуль холста, который проходит по циклу и рисует вершины.

Вопрос:

Мне нужно реализовать новый фильтр, который эффективно проходит по координатам, сравнивая каждую пару с любой другой парой, т.е.(x1,y1)->(x2,y2) в(x1,y1)->(xn,yn), (x2,y2)->(x3,y3) в(x2,y2)->(xn,yn) и т.д. для всех записей и, например, если связь между(x1,y1) а также(x5,y5) припадки[(x5-x1)^2+(y5-y1)^2]=vertex_spacing^2затем эти два набора координат соединяются с соответствующими номерами записей списка и добавляются в новый список, где одна запись будет иметь вид:[(x1,y1), (x5,y5), 0, 4] например. Какой самый эффективный метод для достижения этой цели?

Мои попытки:

Я рассмотрел довольно много методов для обработки списков здесь и в различных руководствах. Я пытался использовать вложенные циклы «for» и «if», но обнаружил, что, хотя этот метод может работать, он приводит к чрезмерно долгому времени выполнения, а также к попытке разбить проблему на многочисленные меньшие циклы for.

Дополнительные примечания:

Конечная цель этого состоит в том, чтобы использовать полученные координаты для интерфейсных элементов интерфейса, а также сохранять и импортировать их по мере необходимости. Функция списка позиций 0 и 4 в[(x1,y1), (x5,y5), 0, 4] заключается в том, чтобы включить интерфейс для группировки координат для последующего использования в объектах холста. Метод должен быть способен обрабатывать потенциально тысячи координат.

Заранее благодарю за любую помощь, я, конечно, готов улучшить формулировку / информацию, которую я предоставил, и / или добавить пример кода, если неясно, что я спрашиваю в любом случае - я все еще новичок в этом! :)

Ответы на вопрос(4)

Ваш ответ на вопрос