ホームページ  >  記事  >  バックエンド開発  >  Pythonでのラムダ式の使い方を詳しく解説

Pythonでのラムダ式の使い方を詳しく解説

WBOY
WBOYオリジナル
2016-07-06 13:29:551596ブラウズ

この記事の例では、Python でのラムダ式の使用法について説明します。参考のために皆さんと共有してください。詳細は次のとおりです:

ここでラムダ関数を紹介します。

ラムダ関数は、単一行を素早く定義する最小限の関数であり、Lisp から借用されたもので、関数が必要な場合はどこでも使用できます。次の例では、従来の関数定義 def とラムダ定義を比較しています。

リーリー
2 つの関数で得られる結果が同じであることがわかります。単純な関数を実装する関数の場合は、ラムダ関数を使用して定義する方が効率的で柔軟です。また、関数を変数に直接割り当てて使用することもできます。関数名を表す変数名。

実際、多くの場合、ラムダ関数を変数に代入する必要はありません。

ラムダ関数を使用する際に注意すべき点がいくつかあります:

ラムダ関数は、任意の数のパラメータ (オプションのパラメータを含む) を受け取り、単一の式の値を返すことができます。 Lambda 関数にはコマンドを含めることはできず、複数の式を含めることもできません。 以下は、ラムダ関数を使用してカスタム並べ替えを実装する方法の簡単なデモンストレーションです。

リーリー

上記のコードは People クラスを定義し、ラムダ関数を使用して People クラスのオブジェクトを含むリストを People の年齢に従って昇順と降順に並べ替えます。実行結果は以下の通りです:

並べ替え前:

年齢:21歳 性別:男性

年齢:20歳 性別:女性
年齢:34歳 性別:男性
年齢:19歳 性別:女性
昇順ソート後:
年齢:19歳 性別:女性
年齢:20歳 性別:女性
年齢:21歳 性別:男性
年齢:34歳 性別:男性
降順ソート後:
年齢:34歳 性別:男性
年齢:21歳 性別:男性
年齢:20歳 性別:女性
年齢:19歳 性別:女性

lambda ステートメントは、新しい関数オブジェクトを作成し、実行時にそれらを返すために使用されます。

例: ラムダフォームの使用

リーリー

出力:

リーリー

仕組み

ここでは、make_repeater 関数を使用して、実行時に新しい関数オブジェクトを作成し、それを返します。

lambdaステートメントは関数オブジェクトの作成に使用されます。基本的に、ラムダはパラメータを受け取り、その後に関数本体として単一の式を受け取り、その式の値が新しく作成された関数によって返されます。 print ステートメントであってもラムダ形式では使用できず、式のみが使用できることに注意してください。

defとlambdaの違い

これらの主な違いは、Python def がステートメントであり、Python lambda が式であるということです。これを理解することが重要です。 以下のアプリケーションをご覧ください。

まず、Python ではステートメントをネストできます。たとえば、特定の条件に基づいてメソッドを定義する必要がある場合は、def のみを使用できます。


ラムダを使用するとエラーが発生します。

リーリー

Python 式で操作する必要がある場合、式のネストを使用する必要がある場合があります。この場合、Python def では必要な結果が得られないため、Python ラムダのみを使用できます。

これが例です:

リーリー

上記の例を通して、Python def と lambda の類似点と相違点をよく理解していただければ幸いです。 Python 関数に興味がある場合は、Python 関数の戻り値、Python 関数のパラメーターをご覧ください。 Python ラムダは、Python でラムダを使用して匿名関数を作成し、def で作成されたメソッドには名前が付いています。表面的なメソッド名が異なることに加えて、Python ラムダの他の点は def と異なりますか?

① python lambda は関数オブジェクトを作成しますが、関数オブジェクトを識別子に代入しません。一方、def は関数オブジェクトを変数に代入します。

② python lambda は単なる式ですが、def はステートメントです。

以下は Python ラムダの形式です。非常に合理化されています。

リーリー

Pythonのリスト解析でPython lambdaを使うと、Python lambdaは関数オブジェクトを作成しますが、その戻り値、つまり関数オブジェクトを使用しないため、すぐに破棄してしまうため、あまり意味がないと感じます。ラムダは単なる式であるため、次のように Python リストまたは Python 辞書のメンバーとして直接使用できます。
リーリー

この場所で def ステートメントに直接置き換える方法はありません。 def は式ではなくステートメントであるため、ラムダ式の中にネストすることはできません。「:」の後には式を 1 つだけ含めることができます。つまり、defではreturnで返せるものはlambdaの後に置くこともでき、returnで返せないものはpythonのlambdaの後には定義できません。したがって、if、for、print などのステートメントはラムダでは使用できません。ラムダは通常、単純な関数を定義するためにのみ使用されます。

Pythonラムダの例をいくつか示します

① 単一パラメータ:

リーリー

結果は6です

② 複数のパラメータ:

リーリー

結果は4です

プログラムを書くことがなくなったら、python lambdaを使って習熟していきます。 。

さらに Python 関連のコンテンツに興味のある読者は、このサイトの特別トピックをチェックしてください: 「Python イメージ操作スキルの概要」、「Python データ構造とアルゴリズムのチュートリアル」、「Python ソケット プログラミング スキルの概要」、「概要」 Python関数の使い方スキルまとめ』、『Python文字列操作スキルまとめ』、『Python入門と上級古典チュートリアル』、『Pythonファイル・ディレクトリ操作スキルまとめ』

この記事が Python プログラミングのすべての人に役立つことを願っています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。