あなたの例のラムダ関数は、どのアイテムが最初に来るかを決定します。
「古典的な」状況では、単純に を計算します。結果x-y
がnegative
x is smaller
before y
さらに、並べ替えメソッドに逆パラメーターを渡すこともできます。これによりreverse=True
、順序が決まります。
この場合、「ソート」関数は「ラムダラッパー」のcmp関数です。そこでは、x の順序を y と交換し、3 番目の引数を使用します。つまり、逆の順序 (x/y-swap) で並べ替え、すべての 3 番目の引数 ( x[2]
) を比較して実行します。
2番目の箇条書きについて:
...ラムダ関数が何をするのか誰か説明できますか?"
ラムダ関数とは何かと尋ねると、匿名の軽量インライン関数です。匿名とは、識別子がないことを意味します。(ただし、1 つを割り当てることができます。例:sqr = lambda x : x**2
他の関数と同じように使用できます: y = sqr(2)
)
Normal function: def name(arg): vs lambda-function: lambda arg: ret_value
^ ^ ^ ^ ^ ^ ^
a) b) c) a) b) c) d)
- a) 以下を通常/ラムダ関数としてマークするキーワード
- b) ラムダ関数が「見つからない」ため匿名の場合の関数名
- c) 関数の引数: 通常の関数 -> 括弧、ラムダ関数 -> なし
- d) 戻り値 - 通常の関数が省略された場合、return で明示的に返さなければならないため。(明示的な戻りがなければ None を返します) ラムダは、コロンの右側で暗黙的に評価の結果を返します。
ソート関数の使用例は、ラムダ関数の典型的な使用例です。これらは「使い捨て」関数として使用され、独自の通常の関数を作成することなくインライン化できます。
より「pythonic」なバリエーションは次のようになります。
from operator import itemgetter
keyfunc = itemgetter(2) # takes the 3rd argument from an itterable
sorted_list = sorted(lol, key=keyfunc, reverse=True)