2017年8月15日火曜日

【Python】2次元配列を独自ソートで並び替え

目的

list型の2次元配列をソートしたかったが、検索しても要素を指定してソートしている記事・ブログしか見当たらなかった。そこで、独自の指定でソートする方法を記す。

環境

  • Windows10
  • Python 3.6.1

ソース

2次元配列の各要素は、[x1,y1,x2,y2]の配列としている。線分のStart座標とEnd座標を表すものとする。これを各要素の長さ順にソートする。

lists = [[1,2,1,1],[1,1,1,1],[1,2,3,4],[1,1,1,1]]
print(lists) # ソート前
print( sorted(lists, key=lambda x: pow(abs(x[0]-x[2]),2) + pow(abs(x[1]-x[3]),2) ) ) # ソート後