2011年6月14日火曜日

Python : 多次元配列の要素でのソート

Pythonでの多次元配列の比較
基本の.sort()だと、要素の[0]番目でソートされる。
たとえば、[ [Index,x,y,z], , , ,]ではIndexでソートされる事になる。

たとえば、yでソートしたい場合等に対応するには
関数で指定してやれば良い。

def hikaku(x,y):
    return x[2] - y[2] #ココに、比較したい要素の番号を入れる

list = [ [0,0,5,9] , [1,3,4,5] , [2,6,3,5] ]

list.sort( hikaku )

パイソンすげぇと思ったら、普通にJScriptでもあった orz
知らなかっただけ。



lambdaを使う
わざわざ関数を指定するのがメンドクサイ場合、無名関数のlambdaを使うと良い

list.sort( cmp = lambda x , y: cmp(x[2],y[2]) )

cmp関数
cmp(a,b)は a,bを比較して、値を返す

0 件のコメント:

コメントを投稿