@adolf13

Как разбить список списков на подсписки из одинаковых элементов?

Есть список списков, содержащий координаты точек линий (Хстарт, Устарт, Хкон,Укон).
[[10, 10, 20, 10],
[20, 10, 20, 20],
[10, 20, 20, 20],
[10, 10, 10, 20],
[0, 0, 40, 0],
[40, 40, 40, 0],
[0, 40, 40, 40],
[0, 0, 0, 40]]

Эти линии образуют 2 квадрата. Как разбить этот список на списки координат отдельных квадратов? Т.е. получить list1[[10, 10, 20, 10],[20, 10, 20, 20], [10, 20, 20, 20], [10, 10, 10, 20]] и list2[ [0, 0, 40, 0], [40, 40, 40, 0],[0, 40, 40, 40], [0, 0, 0, 40]] ? Группируются по одинаковым координатам начала и конца.
  • Вопрос задан
  • 217 просмотров
Решения вопроса 1
tumbler
@tumbler Куратор тега Python
бекенд-разработчик на python
Внешний цикл будет отвечать за поиск одной замкнутой фигуры. Выход из цикла - когда закончатся неотсортированные отрезки.
Внутренний цикл будет искать среди неотсортированных отрезков тот, который либо начинается, либо заканчивается точкой, которая формирует текущую фигуру. Когда такие закончатся - новый квадрат выносим в список фигур. На первом шаге берем в текущую фигуру первый неотсортированный отрезок.

В зависимости от условий задачи, еще надо проверять что это именно квадрат, что новые отрезки расширяют ломаную (не начинаются из середины ломаной) и т.д.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Drill
square_1, square_2 = coords[:4], coords[4:]
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы