【Python】lambda(ラムダ)式の使い方を徹底解説!def(関数)とのコードを比較!

lambda(ラムダ)式とは名前をつけない状態で関数として使用できる為、無名関数と呼ばれています。

一度きりの使用なので、消費税の計算などの単純な処理やmap()関数やfilter()関数といった関数の引数に関数を指定したいときに使用することができます。

今回はlambdaの以下の内容について解説します。
lambda(ラムダ)式とは
lambdaでfor文を実装
lalmbdaでif文を実装
lambdaでif文とfor文を組みわせて実装
lambdaとdefをコードで比較する

lambda(ラムダ)式とは

lambda関数は無名関数と呼ばれ、無名の小さな関数を定義します。
無名の関数を定義して使用することで、プログラムの色んな所で制限なく利用できます。
しかし、無名の関数は任意の数の引数を取ることができますが、1つの式しか持つことができません。

lambda式の書き方

datetimeの構文は下記となります。

lambdaの後に引数を設定し、「:」の後に返り値を設定します。

lambda式を使ったサンプルコード

出力結果

6
おはようございます。

lambda式の基本的な使い方

lambda式の基本的な使い方をサンプルコードを使って紹介します。

引数と返り値を設定して呼び出す

これが無名関数の基本的な呼び出し方となります。
lambdaの後に引数を設定し、「:」の後に返り値を設定することで無名関数を呼び出すことができます。

出力結果

98
おはようございます。

lambda式の実践的な使い方

lambda式の実践的な使い方を紹介していきます。

lambda式でfor文を実装する

lambda式でfor文を実装してみます。
lambda式は一行で処理を書く必要があるためfor文をそのまま書くことは出来ません。
しかし、map()関数を使用することで、for文のような処理を実装することができます。

出力結果

[‘田中’, ‘鈴木’, ‘中村’, ‘秋元’]
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38]

if文を実装する

lambda式でif文を実装するには、if文の三項演算子を使用します。
三項演算子とはプログラミングで登場する演算子のひとつであり、「if else」を一文で書きたいときに使う演算子です。
つまり、三項演算子とlambda式を組み合わせることで、1行でif文を書くことが出来ます。

出力結果

男性です
100未満です。

三項演算子とlambda式を組み合わせることで、一行でif文を書くことが出来ました。

for文とif文を組み合わせて実装する

for文とif文を組み合わせて実装してみます。
リストの中にはいくつかの数字があり、100以上であれば「”数字は”100以上です。」、それ以外の場合”「数字は”100未満です。」と表示するようなコードを作成します。

出力結果

[‘0は100未満です。’, ‘120は100以上です。’, ‘2は100未満です。’, ’99は100未満です。’, ‘450は100以上です。’, ’44は100未満です。’, ’88は100未満です。’, ‘1000は100以上です。’, ‘667は100以上です。’, ’22は100未満です。’]

map()関数によってリストの配列を取り出し、それに対して、if文でチェックを行っています。
そして、チェックを行った結果をリストに格納して表示しています。

def(関数)とlambda式(無名関数)をコードで比較

defとlambda式を同じ処理を書いてコードを比較してみます。
リストの中にある数字が偶数である場合と奇数である場合で表示を変えてリストに格納するコードを作成します。

defで作成すると、下記のようになります。

defの例

出力結果

[‘0は偶数です。’, ‘120は偶数です。’, ‘2は偶数です。’, ’99は奇数です。’, ‘450は偶数です。’, ’44は偶数です。’, ’88は偶数です。’, ‘1000は偶数です。’, ‘667は奇数です。’, ’22は偶数です。’]

defで書くと、for文とif文がインデントで区別されていて分かりやすいです。
続いて、lambda式で書いてみると下記のようになります。

lambda式の例

出力結果

[‘0は偶数です。’, ‘120は偶数です。’, ‘2は偶数です。’, ’99は奇数です。’, ‘450は偶数です。’, ’44は偶数です。’, ’88は偶数です。’, ‘1000は偶数です。’, ‘667は奇数です。’, ’22は偶数です。’]

defに比べて、読み寄りにくいイメージがありますが、lambdaは1行で簡潔に関数を表現することができます。
つまり、単純な処理ならdefで名前をつけて定義するより、lambda式で書いた方がコードの量が少なくてすみます。

また、リストの処理を行うmap()関数やfilter()関数といった関数の引数に関数を指定したいときに組み合わせるのも良いと思います。

Writer
壷井

壷井

株式会社flyhawkの壷井です。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。

最新の案件情報

フリーランスエンジニアの案件探し