2016-05-09 3 views
0

мне нужно отсортировать список [x,y] координат, выглядит следующим образом:Как отсортировать список ху координат

list = [[1,2],[0,2],[2,1],[1,1],[2,2],[2,0],[0,1],[1,0],[0,0]] 

Узор Я ищу после сортировки является:

[x,y] координат должны сортировать по y сначала, а затем x. Новый список должен выглядеть так:

list = [[0,0],[1,0],[2,0],[0,1],[1,1],[2,1],[0,2],[1,2],[2,2]] 

Я не могу понять, как это сделать и будет признателен за помощь.

+2

Я голосую, чтобы закрыть этот вопрос как не по теме, потому что он без усилий. – gsamaras

ответ

9

использование sorted с ключом:

>>> my_list = [[1,2],[0,2],[2,1],[1,1],[2,2],[2,0],[0,1],[1,0],[0,0]] 
>>> sorted(my_list , key=lambda k: [k[1], k[0]]) 
[[0, 0], [1, 0], [2, 0], [0, 1], [1, 1], [2, 1], [0, 2], [1, 2], [2, 2]] 

Это первый сортируют по значению у, и если это равны, то он будет сортировать по значению х.

Я также рекомендую не использовать list в качестве переменной, так как это built-in data structure.

+1

Нет проблем. Хороший ответ! –

1

Определить виртуальный индекс Z = (X + Y) теперь выполняет быструю сортировку по Z и на основе элементов выбора Z Z (X, Y). Точки на круге приведут к тому же Z (и, очевидно, будут склеиваться в результатах сортировки)

Смежные вопросы