2024/05/07ブックマークPythonで使われるlambda(無名関数)に関する記事です。lambdaとは何か。通常使われるdef文との違いを解説します。次に使い方について詳しく解説します。その上でdef文による記述をlambdaで記述し、関数の簡潔表現を説明します。PLAYlambdaを使うと関数定義を簡潔に表現することができます。処理内容が少ない関数を実装したい時に使用します。通常の関数表現「def文」との違いや使い所を解説していきます。lambdaは関数作成方法のひとつlambdaとはlambdaは関数作成方法のひとつです。無名関数とも呼ばれています。func(args):」のようにfuncなどの関数名が必要ですがlambdaは無名関数の名の通り関数名を表記する必要がありません。関数名が無いので変数に直接戻り値を返す際に使用されます。defとlambdaの違いdefとlambdaの違いはdefは宣言文(ステートメント)であり、lambdaは式です。defを使う場合、事前に宣言が必要となりますが、lambdaは式ですので式として簡潔に表現できます。例として2乗を求めるプログラムをdefとlambdaで記述します。結果:4どうでしょうか。簡単な関数であればlambdaでの記述のほうが簡潔に記述できることがわかるかと思います。Pythonコーディング規約PEP8ではlambdaに名前を付与するのは本来、非推奨ですが今回は便宜上名前をつけて記述しています。(文法的にはエラーではありません。上記のようにlambdaは短い処理を関数化したいときに適しています。次に使い方を説明していきます。lambdaの使い方lambdaの使い方では、lambdaの基本的な使い方をみていきましょう。lambdaは次のように記述します。lambda_引数:処理内容また、lambda式は複数行にまたがって記述はできません。(1行で処理内容を書ききる必要あり)(注意:_アンダースコアは実際の記述では半角スペースになります)先ほどの2乗を求めるプログラムを例に解説します。x**2print(y(2))結果:4変数(y)に2乗した値を代入するプログラムになります。右辺にまず、lambdaを記述し、次に引数(x)を記述しコロンで区切ります。処理内容、今回の場合、引数を2乗する処理を記述します。引数を複数渡すこともできます。x,z:x*zprint(y(5,5))結果:25lambdaの利用シーンlambdaの利用シーンとしてはfilter関数、map関数やsorted関数と一緒に使われることが多いです。上記の関数は引数に関数を渡します。その際にlambdaを使う事によって簡潔に表現することができます。filter関数を例に記述してみます。filter関数は条件に合致するものを抽出する関数です。filter関数は以下のように記述します。filter(関数,リストなどのオブジェクト)※第一引数にlambdaを使います。nums)print(list(results))def文をlambdaを使って記述してみよう次にdef文で記述されたプログラムをlambdaで表現してみましょう。例として苗字リストに呼称「さん」を付与する処理で説明します。今回はlambdaを先ほど紹介したmap関数の引数として使います。map関数はリストなどの複数要素を持つデータに対して、その要素に同じ処理を行う関数です。map関数は以下のように記述します。map(関数,リストなどのオブジェクト)※第一引数にlambdaを使います。[‘山崎さん’,‘鈴木さん’,‘浅村さん’,‘島内さん’,]次にlambdaを使い記述していきます。[‘山崎さん’,‘鈴木さん’,‘浅村さん’,‘島内さん’,]pre_listに苗字をリストを格納し、それに対してmap関数で「さん」を付与しadd_listに格納しています。map関数の第一引数に「さん」を付与する関数を第二引数に第一引数へ渡すリストを指定しています。ここで注意すべきは、map関数はmapオブジェクトというデータを返すということです。そのため、list関数を使ってリストに変換しています。lambdaを使うことによってスッキリと表現できました。まとめこれまでお伝えしてきた通り、lambdaは非常に便利な機能ですが、1行で書き切る必要があります。複雑な処理や複数行にまたがる処理を書くことはできないということです。filter関数などと一緒に使ったりすることで、def文で記述するほどでもない処理の際に利用されます。状況に応じて使い分けしていただければと思います。カンファレンス・セミナーなどの情報を集約し掲載しています。PLAYに登録すると、スキルアップやキャリアアップのための情報がもっと簡単に見つけられます。面白そうなイベントを見つけたら積極的に参加してみましょう。PLAYでイベントに参加しよう。イベントをはじめようグループを作れば、無料で誰でもイベントページが作成できます。~クラウド環境下でのセキュリティ...エンジニアの視点で変革を導く:エンジニアバックグラウンドを活かしたマネジメ...[PR]今こちらのイベントが人気です「RAG-1グランプリ」知見共有会イベントの参加には会員登録(無料)が必要です。PLAYに登録すると、スキルアップやキャリアアップのための情報をもっと簡単に見つけられます。