名前は、エンティティを参照またはアドレス指定するために使用される規則です。私たちの周りのほとんどすべてに名前があります。プログラミングの世界もこれに従っています。しかし、すべてに名前を付ける必要がありますか?それとも、単に「匿名」の何かを持つことができますか?答えは、はいです。 ' 実際には無名である匿名関数としても知られるラムダ関数を提供します。それでは、次の順序で、Pythonのこれらの「匿名の謎」について学びましょう。
- Python Lambda関数が必要なのはなぜですか?
- Python Lambda関数とは何ですか?
- ラムダ関数の書き方は?
- 匿名関数はどのようにしてコードのサイズを縮小しますか?
- ユーザー定義関数内のPythonLambda関数
- 内で匿名関数を使用する方法:
それでは始めましょう:)
なぜPythonLambda関数を使用するのですか?
匿名関数の主な目的は、ある関数が一度だけ必要なときに明らかになります。必要な場所に作成できます。このため、Python Lambda関数は、filter()、map()などの他の定義済み関数と一緒に使用される使い捨て関数とも呼ばれます。これらの関数は、コードの行数を次のように減らすのに役立ちます。正常 。
これを証明するために、さらに進んでPythonLambda関数について学びましょう。
Python Lambda関数とは何ですか?
Python Lambda関数は、名前のない関数です。これらは、匿名関数または名前のない関数とも呼ばれます。 「ラムダ」という言葉は名前ではなく、キーワードです。このキーワードは、後続の関数が匿名であることを指定します。
これらの無名関数が何を参照しているのかがわかったところで、さらに進んで、これらのPythonLambda関数の記述方法を見てみましょう。
PythonでLambda関数を書く方法は?
ラムダ関数はラムダ演算子を使用して作成され、その構文は次のとおりです。
構文:
ラムダ引数:式
Python ラムダ関数 引数はいくつでも構いませんが、必要なのは 1つの式。 入力または引数は0から始まり、任意の制限まで上がることができます。他の関数と同じように、入力のないラムダ関数があってもまったく問題ありません。したがって、ラムダ関数は次のいずれかの形式で使用できます。
例:
ラムダ:「目的を指定して」
ここでは、ラムダ関数は引数を取りません。
例:
ラムダa1:「の使用を指定します1「」
ここで、ラムダは1つの入力を取ります。1。
セールスフォースのアプリとは
同様に、ラムダをaにすることができます1、へ2、へ3..にn。
これを示すために、いくつかの例を見てみましょう。
例1:
a =ラムダx:x * x print(a(3))
出力: 9
例2:
a =ラムダx、y:x * y print(a(3,7))
出力: 21
ご覧のとおり、ここでは2つの例を取り上げました。最初の例では、1つの式だけでラムダ関数を使用しますが、2番目の例では2つの引数が渡されます。両方の関数には、引数が後に続く単一の式があることに注意してください。したがって、ラムダ関数は、複数行の式が必要な場合には使用できません。
一方、通常のPython関数は、関数定義で任意の数のステートメントを受け取ることができます。
匿名関数はどのようにしてコードのサイズを縮小しますか?
必要なコードの量を比較する前に、まず次の構文を書き留めましょう。 そしてそれを前述のラムダ関数のそれと比較します。
Pythonの通常の関数は、 def 次のようなキーワード:
構文:
def function_name(parameters):
ステートメント
ご覧のとおり、ラムダ関数に必要なコードの量は、通常の関数のコード量よりもかなり少なくなっています。
オブジェクトの配列を作成する方法
今、通常の関数を使用して以前に取った例を書き直してみましょう。
例:
def my_func(x):return x * x print(my_func(3))
出力: 9
ご覧のとおり、上記の例では、3の平方根の値を評価するためにmy_func内にreturnステートメントが必要です。逆に、ラムダ関数はこのreturnステートメントを使用しませんが、無名関数の本体を使用します。関数自体と同じ行のコロン記号の後に記述されます。したがって、関数のサイズはmy_funcのサイズよりも小さくなります。
ただし、上記の例のラムダ関数は、他のいくつかを使用して呼び出されます a。これが行われるのは、これらの関数には名前がなく、したがって何らかの名前を呼び出す必要があるためです。しかし、この事実は、実際に他の名前を割り当てて呼び出す必要があるのに、なぜそのような名前のない関数を使用するのかについて混乱しているように見えるかもしれません。そしてもちろん、私の関数に名前aを割り当てた後、それはもう無名のままではありません!正しい?
これは正当な質問ですが、要点は、これはこれらの無名関数を使用する正しい方法ではないということです。
匿名関数は他の関数内で使用するのが最適です 高階関数 引数として関数を使用するか、出力として関数を返します。これを実証するために、次のトピックに進みましょう。
ユーザー定義関数内のPythonLambda関数:
上記のように、ラムダ関数は他の関数内で使用され、最高の利点を示します。
次の例は、1つの引数xを受け取る通常のPython関数であるnew_funcで構成されています。次に、この引数は、ラムダ関数を介して提供される未知の引数yに追加されます。
例:
def new_func(x):return(lambda y:x + y)t = new_func(3)u = new_func(2)print(t(3))print(u(3))
出力:
6
5
ご覧のとおり、上記の例では、new_func()を使用するたびに、new_func内に存在するラムダ関数が呼び出されます。毎回、引数に個別の値を渡すことができます。
高階関数内で無名関数を使用する方法を確認したので、次に、filter()、map()、reduce()メソッド内で最も一般的な使用法の1つを理解しましょう。
filter()、map()、reduce()内で匿名関数を使用する方法:
内の匿名関数 フィルタ():
フィルタ():
filter()メソッドは、引数として渡された別の関数を使用して、指定された反復可能オブジェクト(リスト、セットなど)をフィルター処理し、すべての要素がtrueまたはfalseであることをテストするために使用されます。
この関数の構文は次のとおりです。
構文:
filter(関数、反復可能)
次の例を考えてみましょう。
例:
my_list = [2,3,4,5,6,7,8] new_list = list(filter(lambda a:(a / 3 == 2)、my_list))print(new_list)
出力: [6]
ここで、my_listは、フィルター関数に渡される反復可能な値のリストです。この関数はラムダ関数を使用して、リストに値があるかどうかを確認します。値は3で割ると2になります。出力は、無名関数内に存在する式を満たすリストで構成されます。
地図():
Pythonのmap()関数は、特定の関数をすべての反復可能オブジェクトに適用し、新しいリストを返す関数です。
構文:
map(関数、反復可能)
map()関数内でのラムダ関数の使用法を示す例を見てみましょう。
例:
my_list = [2,3,4,5,6,7,8] new_list = list(map(lambda a:(a / 3!= 2)、li))print(new_list)
出力:
[True、True、True、True、False、True、True]
上記の出力は、イテラブルの値が3で割ったときに2に等しくない場合は常に、返される結果がTrueになることを示しています。したがって、my_list内のすべての要素について、条件がFalseに変更されたときの値6を除いて、trueを返します。
reduce():
reduce()関数は、パラメーターとして渡される要素のリストに他の関数を適用し、最終的に単一の値を返すために使用されます。
この関数の構文は次のとおりです。
構文:
reduce(関数、シーケンス)
例:
functoolsからimportreduce reduce(lambda a、b:a + b、[23,21,45,98])
上記の例を次の画像に示します。
Javaの再帰フィボナッチ数列
出力: 187
出力は、リストのすべての要素が 継続的に追加 最終結果を返します。
これで、「PythonLambda」に関するこの記事は終わりです。あなたがあなたと共有されたすべてのものを明確にしたことを願っています。 できるだけ練習し、経験を元に戻してください。
質問がありますか?この「PythonLambda」ブログのコメントセクションでそのことを伝えてください。できるだけ早くご連絡いたします。
Pythonとそのさまざまなアプリケーションに関する詳細な知識を得るには、ライブに登録できます。 24時間年中無休のサポートと生涯アクセス。