我需要对[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]]
我无法弄明白该怎么做,并希望得到一些帮助。
答案 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(显然将在排序结果中粘在一起)