【Python】無名関数のラムダ式(lambda)を身につける

  • 2019年9月10日
  • 2020年4月3日
  • Python

こんにちは!

皆さんは、無名関数、ラムダ式という言葉を聞いたことはありますか?

プログラミング初心者の方は、聞いたことがない方もいるかも知れません。

ラムダ関数はよく使われているので、使用法についてしっかりと理解しておかなければなりません。

そこで今回は、無名関数、ラムダ式とは何かを説明して、簡単な使用例を紹介していきます。


無名関数、ラムダ式とは

無名関数とは

無名関数とは、その名の通り名前の無い関数のことです。

無名関数を使えば、名前をつけることなく関数を定義できるようになります。

Pythonでも使われますし、他の言語でも使われる言語があります。

ラムダ式とは

ラムダ式とは、無名関数の表現の方法の1つです。

無名関数の表現方法はラムダ関数の他にもあるのですが、Pythonでは、無名関数にラムダ式を使用します。

ラムダ式を用いることによって、ちょっとした処理の関数をいちいち定義することなく利用できるようになります。

ラムダ式の書式

ラムダ式の書式は以下のようになります。

lambda 引数1, 引数2, ... , 引数n : 実行したい文

実行したい文には、数式や、関数の実行式などが入ります。


ラムダ式の簡単な例

ラムダ式を用いないプログラムを、ラムダ式を用いて表していきます。

以下のプログラムは、三角形の面積を求めるプログラムです。

def triangle(w, h):
    return w * h / 2

n = triangle(2, 3)
print(n)

実行結果

3.0

このプログラムをラムダ式で表します。

以下のプログラムは、ラムダ式を用いて三角形の面積を求めるプログラムです。

triangle = lambda w, h : w * h / 2

num = triangle(2, 3)
print(num)

ラムダ式を用いて、三角形の面積を求める関数オブジェクトを作成しています。

作成した関数オブジェクトをtriangleに代入しています。

また、ラムダ式を変数に代入せずに直接実行することもできます。

以下のプログラムは、三角形の面積を求めるラムダ式を直接実行するプログラムです。

num = (lambda w, h: w * h / 2)(2, 3)
print(num)

実行結果

3.0

ラムダ式の後に「( )」をつけることによって、ラムダ式を普通の関数の使用法と同じように利用しています。


map関数でラムダ式を使用する

Pythonでラムダ式の主な用途の1つとしてmap関数に使用することが挙げられます。

map関数とは、リストなどから要素を順に取り出して、その要素を指定の関数の引数として、関数を実行する関数です。

関数の引数に関数を使うという、少し珍しい関数ですね。

map関数の書式

map関数の書式は以下のようになります。

map(関数, イテラブル)

map関数の戻り値はmap型な為、戻り値を扱う場合にはリストなどに変換する必要があります。

map関数でのラムダ式の使用例

それでは、map関数でラムダ式を利用する際の使用例を見てみましょう。

以下のプログラムは、list1に格納された値を二乗するプログラムです。

list1 = [1, 2, 3, 4, 5]

list2 = list(map(lambda x : x * x, list1))
print(list2)

実行結果

[1, 4, 9, 16, 25]

map関数の第一引数にラムダ式を、第二引数にlist1を指定しています。

また、map関数の戻り値をlist()によりリストに変換しています。

たった3行で、リスト内全ての値に対して処理を行うことができていますね!


まとめ

いかがでしたか?

無名関数のラムダ式について理解できたでしょうか?

ラムダ式を用いることによって、ちょっとした処理の関数をいちいち定義することなく利用できるようになる為、プログラムが短くなり、可読性が高まります。

また、ラムダ式は初心者の方は意外と知らない方が多い記述法です。

ラムダ式を知らないと、ラムダ式が出てきたときに何か難しそうな処理してそう・・・と思ってしまい、やる気がなくなってしまうかも知れません。

ラムダ式は全然難しく無いので、しっかりとラムダ式を理解しましょう!

広告