如何对x-y坐标列表进行排序

时间:2016-05-09 09:11:07

标签: python sorting

我需要对[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 个答案:

答案 0 :(得分:16)

使用密钥:{/ p>使用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]]

它将首先对y值进行排序,如果它相等,那么它将对x值进行排序。

我还建议不要将list用作变量,因为它是built-in data structure

答案 1 :(得分:1)

定义虚拟索引Z =(X + Y)现在对Z执行快速排序并基于索引Z拾取元素(X,Y)。圆上的点将导致相同的Z(显然将在排序结果中粘在一起)