Pythonでは、def
という予約語を使うことで関数を表記できます。この書き方とは別に、ラムダ式(無名関数)という関数の作り方が存在しています。
ラムダ式(無名関数)の特徴を簡単に説明すると、**「他の関数と組み合わせて使う補助的な関数」**です。
今回はこのラムダ式(無名関数)の使い方や使いどころを説明します。
先に説明した通り、ラムダ式(無名関数)は「他の関数と組み合わせて使う」ものです。もちろん単体でも使うことはできますが、その真価は他の関数と同時に使うと発揮されます。
まずは構文を見てみましょう。簡単な例として、「引数に対して2を乗算した数値を返す」ラムダ式(無名関数)を書きます。
このとき、x
が引数となり、式の右側のx * 2
の結果(上記の場合は30
)が返ってきます。
日本語を当てはめると以下の通りです。
def
と違って、結果を返すのにreturn
も省略されています。
なお、複数の引数を取る場合は以下のようになります。
それでは少し発展して他の関数と組み合わせた場合について説明します。
まずは下記のコードを見てください。
これの出力結果は以下となります。
上の例では、apply_to_list
はリストを受け取り、与えられた関数f
をリストの各要素に適用する関数です。apply_to_list
は、引数を2乗するラムダ式(無名関数)と共に結果を返します。
引数としてラムダ式(無名関数)を渡すことで、参照先のapply_to_list
が簡素化されました。
このように、ラムダ式(無名関数)を使うことですっきりしたコードが作りやすくなります。
最後に、頻繁にラムダ式(無名関数)が利用されるシーンを紹介します。以下のようにsorted
、map
、filter
はラムダ式(無名関数)と共に利用されることが多いです。
sortedの例
上の例では、各タプルの2番目の要素([1]
)でリストをソートするためにsorted
を使用しています。key
パラメータには、各タプルの2番目の要素を返すラムダ式(無名関数)が設定されています。結果として得られるリストは、抽出されたkey
に基づいて昇順にソートされます。
上の例では、リストの各要素を2乗するラムダ式(無名関数)でmap
を使っています。結果として得られるリストには、元の要素を2乗した数が含まれています。
上の例では、リストから偶数のみを返すラムダ式(無名関数)でfilter
を使用しています。結果のリストには、元のリストの偶数だけが含まれています。
sorted
を調べたときに出てきた参考コードに使われているから、といった理由で、なんとなくlambda
を使っている人を何人か見かけました。これをきっかけに、ラムダ式(無名関数)の使い方を覚えて効率的に使っていきましょう。
ラムダ式(無名関数)を使えば、省コード化に役立つだけでなく、使うべきところで使えば可読性を高められます。
Python中級者として通るべき道なので、感覚をつかんで効果的にコードに入れ込んでいきたいところです。