Python ラムダ関数
Python ラムダ関数 匿名関数であるとは、関数に名前がないことを意味します。私たちがすでに知っているように、 確かに キーワードは、Python で通常の関数を定義するために使用されます。同様に、 ラムダ キーワードは匿名関数を定義するために使用されます。 パイソン 。
Python ラムダ関数の構文
構文: ラムダ引数 : 式
- この関数には任意の数の引数を指定できますが、評価されて返される式は 1 つだけです。
- 関数オブジェクトが必要な場合はどこでもラムダ関数を自由に使用できます。
- ラムダ関数は構文的に 1 つの式に制限されていることを理解しておく必要があります。
- 関数内の他のタイプの式に加えて、プログラミングの特定の分野でさまざまな用途があります。
Python ラムダ関数の例
この例では、ラムダ関数を定義しました( アッパー ) を使用して文字列を大文字に変換します。 アッパー() 。
このコードは、という名前のラムダ関数を定義します。 upper> これは文字列を引数として受け取り、それを使用して大文字に変換します。 upper()> 方法。次に、このラムダ関数を文字列「techcodeview.com」に適用し、結果を出力します。
Python3
str1> => 'techcodeview.com'> upper> => lambda> string: string.upper()> print> (upper(str1))> |
出力:
GEEKSFORGEEKS
Python での Lambda 関数の使用
Python ラムダ関数の実際の使用法をいくつか見てみましょう。
Python ラムダ関数を使用した条件チェック
ここで、 「フォーマット数値」 ラムダ関数を呼び出し、num が操作を実行するためのパラメータとして渡されます。
Python3
format_numeric> => lambda> num: f> '{num:e}'> if> isinstance> (num,> int> )> else> f> '{num:,.2f}'> print> (> 'Int formatting:'> , format_numeric(> 1000000> ))> print> (> 'float formatting:'> , format_numeric(> 999999.789541235> ))> |
出力:
Int formatting: 1.000000e+06 float formatting: 999,999.79
Lambda関数とdef定義関数の違い
このコードは、次の両方を使用してキューブ関数を定義します。 ' def'> キーワードとラムダ関数。両方のアプローチを使用して、指定された数値 (この場合は 5) の 3 乗を計算し、結果を出力します。出力は両方とも 125 です。 ' def'> ラムダ関数とラムダ関数を比較し、同じ立方体計算を実現できることを示しています。
Python3
def> cube(y):> > return> y> *> y> *> y> lambda_cube> => lambda> y: y> *> y> *> y> print> (> 'Using function defined with `def` keyword, cube:'> , cube(> 5> ))> print> (> 'Using lambda function, cube:'> , lambda_cube(> 5> ))> |
出力:
Using function defined with `def` keyword, cube: 125 Using lambda function, cube: 125
上の例でわかるように、両方とも 立方体() 機能と ラムダキューブ() 関数は意図したとおりに同じように動作します。上記の例をもう少し分析してみましょう。
| ラムダ関数あり | ラムダ関数なし |
|---|---|
| 何らかの値を返す単一行の時々ステートメントをサポートします。 | 関数ブロック内の任意の数の行をサポート |
| 短い操作やデータ操作の実行に適しています。 | 複数行のコードが必要な場合に適しています。 |
| lambda 関数を使用すると、コードの可読性が低下する場合があります。 | 読みやすくするために、コメントと関数の説明を使用できます。 |
Python ラムダ関数の実際的な使用法
リスト内包表記を備えた Python Lambda 関数
内部の反復ごとに、 リスト内包表記 では、デフォルトの引数 x (x は反復内の現在の項目) を持つ新しいラムダ関数を作成しています。その後、for ループ内で、次を使用してデフォルトの引数を持つ同じ関数オブジェクトを呼び出します。 アイテム() そして目的の値を取得します。したがって、 is_even_list ラムダ関数オブジェクトのリストを保存します。
Python3
is_even_list> => [> lambda> arg> => x: arg> *> 10> for> x> in> range> (> 1> ,> 5> )]> for> item> in> is_even_list:> > print> (item())> |
出力:
10 20 30 40
if-else を使用した Python Lambda 関数
ここで使用しているのは、 マックス ラムダ関数を使用して、2 つの整数の最大値を見つけます。
Python3
Max> => lambda> a, b : a> if> (a>b)>> |