Python lambda(匿名関数)

Python はlambdalambda を使用して匿名関数を作成します。

lambda 関数は、小型で匿名のインライン関数であり、任意の数のパラメータを持つことができますが、式は1つだけです。

匿名関数はdefdef キーワードを使用して完全な関数を定義する必要はありません。

lambda 関数は通常、シンプルな1行の関数を記述するために使用され、通常は関数を引数として渡す必要がある場合に、例えば map()、filter()、reduce() などの関数内で使用されます。

lambda 関数の特徴:

  • lambda 関数は匿名であり、関数名を持たず、変数に代入するか、他の関数に引数として渡すことによってのみ使用できます。
  • lambda 関数は通常1行のコードのみを含み、そのため簡単な関数の作成に適しています。

lambda の構文形式:

lambda arguments: expression
  • lambdalambda は Python のキーワードであり、lambda 関数を定義するために使用されます。
  • argumentsarguments はパラメータリストであり、0個以上のパラメータを含めることができますが、コロン(::)の前に指定する必要があります。
  • expressionexpression は式であり、関数の結果を計算して返すために使用されます。

以下の lambda 関数にはパラメータがありません:

例

f = lambda: "Hello, world!" print(f()) # 出力: Hello, world!

出力結果は以下のとおりです:

Hello, world!

以下の例では、lambda を使用して匿名関数を作成し、関数パラメータ a を設定し、関数はパラメータ a に 10 を加算して結果を返します:

例

x = lambda a : a + 10 print(x(5))

出力結果は以下のとおりです:

15

lambda 関数は複数のパラメータを設定することもでき、パラメータはカンマ,で区切ります:

以下の例では、lambda を使用して匿名関数を作成し、関数パラメータ a と b を乗算して結果を返します:

例

x = lambda a, b : a * b print(x(5, 6))

出力結果は以下のとおりです:

30

以下の例では、lambda を使用して匿名関数を作成し、関数パラメータ a、b、c を加算して結果を返します:

例

x = lambda a, b, c : a + b + c print(x(5, 6, 2))

出力結果は以下のとおりです:

13

lambda 関数は通常、map()、filter()、reduce() などの組み込み関数と一緒に使用され、コレクションに対して操作を実行します。例えば:

例

numbers = [1, 2, 3, 4, 5] squared = list(map(lambda x: x**2, numbers)) print(squared) # 出力: [1, 4, 9, 16, 25]

出力結果は以下のとおりです:

[1, 4, 9, 16, 25]

lambda 関数を filter() と一緒に使用して偶数を抽出します:

例

numbers = [1, 2, 3, 4, 5, 6, 7, 8] even_numbers = list(filter(lambda x: x % 2 == 0, numbers)) print(even_numbers) # 出力:[2, 4, 6, 8]

出力結果は以下のとおりです:

[2, 4, 6, 8]

以下は、reduce() と lambda 式を使用して、シーケンスの累積積を計算する方法を示す例です:

例

from functools import reduce numbers = [1, 2, 3, 4, 5] # reduce() と lambda 関数を使用して積を計算 product = reduce(lambda x, y: x * y, numbers) print(product) # 出力:120

出力結果は以下のとおりです:

120

上記の例では、reduce() 関数は numbers リストを反復処理し、lambda 関数を使用して累積結果を更新し続け、最終的に1 * 2 * 3 * 4 * 5 = 120120 という結果を得ました。

その他の拡張