2016-05-09 4 views
0

を座標:が、私はこのようになります<code>[x,y]</code>座標のリストをソートする必要が

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]] 

それは最初のY値でソートされますと、それは同じだ場合、それは、xの値でソートします。

built-in data structureであるため、listを変数として使用しないことをお勧めします。

+1

問題ありません。いい答え! –

1

仮想インデックスを定義するZ =(X + Y)は、Zで素早くソートを実行し、インデックスZのピックエレメント(X、Y)に基づいて実行されるようになりました。サークル上のポイントは同じZにつながります(ソート結果ではっきりとまとまります)

関連する問題