Эффективное манипулирование списком декартовых координат в Python
m написание программы, которая обрабатывает большие объемы данных, связанных с сетями вершин различных правильных форм. У меня есть рабочий генератор, который выдает список декартовых координат, соответствующих вершинам указанных фигур, на основе диапазона пользовательских параметров ввода. Затем данные передаются в фильтры, которые очищают повторяющиеся записи, сортируют данные и различные другие функции, откуда очищенные данные поступают в модуль холста, который проходит по циклу и рисует вершины.
Вопрос:Мне нужно реализовать новый фильтр, который эффективно проходит по координатам, сравнивая каждую пару с любой другой парой, т. Е. ->(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.
Дополнительные примечания:Конечная цель этого состоит в том, чтобы использовать полученные координаты для интерфейсных элементов интерфейса, а также сохранять и импортировать их по мере необходимости. Функция списка позиций 0 и 4 в[(x1,y1), (x5,y5), 0, 4]
заключается в том, чтобы включить интерфейс для группировки координат для последующего использования в объектах холста. Метод должен быть способен обрабатывать потенциально тысячи координат.
Заранее благодарю за любую помощь, я, конечно, готов улучшить формулировку / информацию, которую яя предоставил и / или добавил пример кода, если неясно, о чем я спрашиваю, яЯ все еще новичок в этом! :)