Python の
Lambda 関数は、小さな匿名関数をその場で作成する強力な方法です。これらの関数は通常、完全な関数定義のオーバーヘッドが不要な、短くて単純な操作に使用されます。
従来の関数は def キーワードを使用して定義されますが、Lambda 関数は lambda キーワードを使用して定義され、コード行に直接統合されます。特に、組み込み関数の引数としてよく使用されます。これらにより、開発者は一時的な関数定義の必要性がなくなり、クリーンで読みやすいコードを作成できるようになります。
この記事では、Lambda 関数の機能とその構文について説明します。また、それらを使用するための例とベスト プラクティスをいくつか示し、その長所と短所についても説明します。
Lambda 関数はバージョン 2.0 以降 Python の一部となっているため、以下が必要になります:
このチュートリアルでは、高速、強力、柔軟で使いやすいオープンソースのデータ分析および操作ライブラリである Pandas ライブラリで Lambda 関数を使用する方法を説明します。インストールしていない場合は、次を実行します:
pip install pandas
まず、開発者が Lambda 関数を作成するために使用する必要がある構文を定義しましょう。
Lambda 関数は、lambda キーワードを使用して定義され、その後に 1 つ以上の引数と式が続きます。
lambda arguments: expression
2 つの数値を加算する Lambda 関数を作成するとします。
add = lambda x, y: x y
次を実行します:
result = add(3, 5) print(result)
結果は次のようになります:
8
2 つの引数 x と y を取る匿名関数を作成しました。従来の関数とは異なり、Lambda 関数には名前がありません。それが、Lambda 関数が「匿名」であると言われる理由です。
また、通常の Python 関数のように return ステートメントは使用しません。したがって、Lambda 関数を自由に使用できます。(この場合のように) 印刷したり、変数に保存したりできます。
次に、Lambda 関数の一般的な使用例をいくつか見てみましょう。
Lambda 関数は、一時的に単純な関数が必要な状況で特に使用されます。特に、高階関数の引数としてよく使用されます。
実際の例をいくつか見てみましょう。
map() は、指定された関数を反復可能オブジェクトの各項目に適用し、その結果を含むマップ オブジェクトを返す組み込み関数です。
たとえば、リスト内の各数値の平方根を計算したいとします。次のように Lambda 関数を使用できます:
# Define the list of numbers numbers = [1, 2, 3, 4] # Calculate square values and print results squared = list(map(lambda x: x ** 2, numbers)) print(squared)
結果は次のようになります:
[1, 4, 9, 16]
これで、初期数値の平方根を含むリストができました。
ご覧のとおり、これにより、後で再利用する必要のない関数をその場で使用するプロセスが大幅に簡素化されます。
次に、数値のリストがあり、偶数の数値をフィルターしたいとします。
Lambda 関数は次のように使用できます:
# Create a list of numbers numbers = [1, 2, 3, 4] # Filter for even numbers and print results even = list(filter(lambda x: x % 2 == 0, numbers)) print(even)
結果は次のようになります:
[2,4]
Python のsorted() 関数は、反復可能な要素から新しい並べ替えられたリストを返します。 Lambda 関数を使用すると、これらのリストに特定のフィルタリング基準を適用できます。
たとえば、2 次元 (x,y) の点のリストがあるとします。 y 値を段階的に並べるリストを作成したいと考えています。
次のようにできます:
# Creates a list of points points = [(1, 2), (3, 1), (5, -1)] # Sort the points and print points_sorted = sorted(points, key=lambda point: point[1]) print(points_sorted)
そして、次のようになります:
[(5, -1), (3, 1), (1, 2)]
Lambda 関数はその簡潔さを考慮して、オンザフライ計算のためにリスト内包表記に埋め込むことができます。
数値のリストがあるとします。私たちがしたいこと:
その方法は次のとおりです:
# Create a list of numbers numbers = [1, 2, 3, 4] # Calculate and print the double of each one squared = [(lambda x: x ** 2)(x) for x in numbers] print(squared)
そして次のようになります:
[1, 4, 9, 16]
これまで検討した例を踏まえて、Lambda 関数を使用する利点をいくつか見てみましょう:
Python の Lambda 関数の制限と欠点について簡単に説明します。
いくつかの長所と短所を検討したので、Lambda 関数を効果的に使用するためのベスト プラクティスを定義しましょう。
場合によっては、より高度な Lambda 関数テクニックが役立つことがあります。
いくつかの例を見てみましょう。
Lambda 関数は複雑な操作のためにネストできます。
このテクニックは、シーケンス内で複数の小さな変換が必要なシナリオで役立ちます。
たとえば、数値の平方根を計算して 1 を加算する関数を作成するとします。これを行うために Lambda 関数を使用する方法は次のとおりです。
# Create a nested lambda function nested_lambda = lambda x: (lambda y: y ** 2)(x) 1 # Print the result for the value 3 print(nested_lambda(3))
次の内容が得られます:
10
多くの Python ライブラリは Lambda 関数を活用して、複雑なデータ処理タスクを簡素化します。
たとえば、Lambda 関数を Pandas や NumPy とともに使用すると、データの操作と変換を簡素化できます。
2 つの列を持つデータ フレームがあるとします。他の 2 つの列の合計である別の列を作成したいと考えています。この場合、次のように Lambda 関数を使用できます:
# Create the columns' data data = {'A': [1, 2, 3], 'B': [4, 5, 6]} # Create data frame df = pd.DataFrame(data) # Create row C as A B and print the dataframe df['C'] = df.apply(lambda row: row['A'] row['B'], axis=1) print(df)
そして、次のようになります:
A B C 0 1 4 5 1 2 5 7 2 3 6 9
Python の Lambda 関数に関する簡単なツアーは以上です!
この記事では、Python で Lambda 関数を使用する方法を確認し、その長所と短所、いくつかのベスト プラクティスを検討し、いくつかの高度な使用例について触れました。
コーディングを楽しんでください!
追伸Python の投稿を報道後すぐに読みたい場合は、Python Wizardry ニュースレターを購読して、投稿を 1 つも見逃さないようにしてください。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3