pythonにおけるlambda式の簡単な応用

7397 ワード

pythonにおけるlambda式の簡単な応用
Lambda式
Pythonでは、lambda式で簡単な機能を定義することができます.この関数は名前がないことを実現するだけなので、匿名関数と呼ばれています.
Lambda式の書き方は以下の通りです.
lambda   1,   2,   N:     

上記の式を使用して、いくつかのパラメータを受け入れる匿名関数を定義します.パラメータはコロンの前(:)、複数のパラメータはカンマで区切られ、コロンの後(:)に書き込まれます.
例を挙げます.
f = lambda x: x ** 2

このlambda式は、パラメータxを受け入れ、x ** 2の計算結果を返す匿名関数を定義する.同時に、付与文は、この匿名関数を変数fに付与する.注意fは、関数結果ではなく関数を保存します.
>>> f
<function at 0x10bcba0d0>

>>> f(4)
16
>>> f(9)
81

上記の例を観察すると、lambda式にはreturnキーワードはありませんが、結果は返されます.はい、匿名関数の の実行結果は、returnキーワードを使用する必要がなく、その戻り値として使用されます.
機能的には、lambda x: x ** 2は、
def no_name(x):
    return x ** 2
>>> no_name(4)
16

一般的に、f = lambda x: x ** 2のように匿名関数を変数に直接付与し、この変数を使用することはありません.関数をパラメータとして使用する必要がある場合にlambda式を使用するので、関数呼び出しの前に別の関数を定義する必要はありません.
先ほど書いた関数filter_numsのように
def filter_nums(nums, want_it):
    return [n for n in nums if want_it(n)]

そのwant_itパラメータは関数である必要があり、lambda式で問題を簡単に解決することができます.このように使用できます.
>>> filter_nums([11, 12, 13, 14, 15, 16, 17, 18], lambda x: x % 2 == 0)
[12, 14, 16, 18]

以前、組み込み関数について話したとき、ソート関数sorted()を紹介しました.複雑な要素をソートするときに、ソートに使用するフィールドを指定するパラメータkeyがあります.このパラメータは関数であり、lambda式で解決することができます.
>>> codes = [(‘  ’,021), (‘  ’,010), (‘  ’,028), (‘  ’,020)]
>>> sorted(codes, key=lambda x: x[1]) #         
[(‘  ’,010), (‘  ’,020), (‘  ’,021), (‘  ’,028)]