У меня есть список точек, которые мне нужно отсортировать по зигзагообразному шаблону,
Я могу легко отсортировать по x +, y +
s = sorted(points, key=lambda tup: tup[1])
print(sorted(s))
точек =
(73.76, 17.5495)
(72.635, 17.5495)
(72.635, 13.0495)
(73.76, 13.0495)
(73.76, -4.9505)
(73.76, -0.4505)
(72.635, -0.4505)
(72.6975, -4.9505)
(-72.635, -0.4505)
(-73.76, -0.4505)
(-73.76, -4.9505)
(-72.635, -4.9505)
(-72.635, 17.5495)
(-73.76, 17.5495)
(-73.76, 13.0495)
(-72.635, 13.0495)
(-75.75, -29.2532)
(-75.75, -32.2532)
(-69.75, -32.2532)
(-69.75, -29.2532)
(75.75, -32.2532)
(75.75, -29.2532)
(69.75, -29.2532)
(69.75, -32.2532)
(-54.25, -27.3195)
(-38.25, -27.3195)
(-38.25, -31.8195)
(-54.25, -31.8195)
(54.25, -31.8195)
(38.25, -31.8195)
(38.25, -27.3195)
(54.25, -27.3195)
(-79.5, 17.0)
(-77.0, 17.0)
(-77.0, 7.0)
(-79.5, 7.0)
(79.5, 17.0)
(77.0, 17.0)
(77.0, 7.0)
(79.5, 7.0)
результат:
[(-79.5, 7.0), (-79.5, 17.0), (-77.0, 7.0), (-77.0, 17.0), (-75.75, -32.2532), (-75.75, -29.2532), (-73.76, -4.9505), (-73.76, -0.4505), (-73.76, 13.0495), (-73.76, 17.5495), (-72.635, -4.9505), (-72.635, -0.4505), (-72.635, 13.0495), (-72.635, 17.5495), (-69.75, -32.2532), (-69.75, -29.2532), (-54.25, -31.8195), (-54.25, -27.3195), (-38.25, -31.8195), (-38.25, -27.3195), (38.25, -31.8195), (38.25, -27.3195), (54.25, -31.8195), (54.25, -27.3195), (69.75, -32.2532), (69.75, -29.2532), (72.635, -0.4505), (72.635, 13.0495), (72.635, 17.5495), (72.6975, -4.9505), (73.76, -4.9505), (73.76, -0.4505), (73.76, 13.0495), (73.76, 17.5495), (75.75, -32.2532), (75.75, -29.2532), (77.0, 7.0), (77.0, 17.0), (79.5, 7.0), (79.5, 17.0)]
, но это не эффективно для перемещения между точками. Как это можно отсортировать, чтобы второе значение сортировалось в обратном порядке для каждого другого уникального первого значения? что я могу сделать, но не то, что мне нужно -
Чего я хочу достичь