覚え書きブログ

Python覚え書き(lambdaとsorted編)

Pythonでは、lambdaオペレータを使うと名前のない関数、つまり匿名関数(anonymous function)を定義することができる。
例えば、

>>> myFunc=lambda x: x*x
<<
のように定義された関数は、次のdefオペレータを使った場合と同じ関数となる。
>>
>>> def myFunc(x) return x*x

これだけでは、匿名関数の有難さが無いが、sorted関数などの他の関数と組み合わせることにより、その力を発揮する。
例えば、sorted関数のkeyパラメータに、ソート対象の値を出力するlambda関数を設定することができる。

>>> nums=[5,4,1,3,2]
>>> sorted(range(len(nums)),key=lambda x:nums[x])
[2, 4, 3, 1, 0]

これは、lambda関数により、各インデックスに対応するnumsの値を出力することにより、numsのインデックスを値でソートすることに対応している。

同様に、max関数とlambdaオペレータを組み合わせることにより、最大の値を取るインデックスを求めることができる。

>>> nums=[5,4,1,3,2]
>>> max(range(len(nums)),key=lambda x:nums[x])
0