sorted lambdaメタグループを使用してソート
2340 ワード
list1=[7, -8, 5, 4, 0, -2, -5]
print(sorted(list1,key=lambda x:(x<0,abs(x))))
実行結果は次のとおりです.
[0, 4, 5, 7, -2, -5, -8]
この例で使用するlambdaは、関数形式に書き換えることができ、実行結果は完全に同じです.
list1=[7, -8, 5, 4, 0, -2, -5]
def fun(x):
return (x<0, abs(x))
print(sorted(list1, key=fun))
1、sorted関数とは何ですか.
sorted(iterable, *, key=None, reverse=False)
sortedは、現在のオブジェクトを変更することなく、戻り値として新しいリストを作成する組み込み関数です.この方法は、可変シーケンスまたはジェネレータを含む任意の形式の反復可能オブジェクトをパラメータとして受け入れることができる.sortedがどのようなパラメータを受け入れても、最後にリストが返されます.
リストリストのsortメソッドに比べてlist.sortメソッドは、リストをその場でソートします.つまり、元のリストをコピーすることなく、現在のオブジェクトを直接変更します.これもこのメソッドの戻り値がNoneの理由で、このメソッドがリストを新規に作成しないことを注意します.
2、メタグループ間の比較サイズ.
t 1=(a 1,a 2,a 3)およびt 2=(b 1,b 2,b 3)などの各要素間の大きさで比較する
まずa 1とb 1の大きさを比較し、a 1>b 1の場合、t 1>t 2;a 1
3、このケースのソートルールは何ですか.
lambda x:(x<0,abs(x))
以上より,lambdaを経て得られたkeyは,(False,7),(True,8),(False,5),(False,4),(False,0),(True,2),(True,5)である.
まず1位のFalseとTrueを比較して、デフォルトの昇順で、小さいのは前で、大きいのは後ろです.False
したがって、最後の結果は[0,4,5,7,−2,−5,−8]であった.