Python での Lambda 関数の使用法に関する簡単な説明

WBOY
リリース: 2023-04-12 12:55:02
転載
1405 人が閲覧しました

Python での Lambda 関数の使用法に関する簡単な説明

今日は、Python の非常に使いやすい組み込み関数である lambda メソッドをお勧めしたいと思います。このチュートリアルでは、大まかに説明します。

## lambda 関数とは
  • lambda 関数のフィルタリスト要素
  • lambda 関数と map() メソッドの併用
  • lambda 関数と apply の併用() メソッド
  • ラムダ メソッドの使用が適切でないのはどのような場合ですか?
  • ラムダ関数とは

Python では、ラムダ キーワードを使用して関数を宣言することがよくあります。匿名関数、いわゆる匿名関数、平たく言えば、名前のない関数です。特定の構文形式は次のとおりです:

lambda arguments : expression
ログイン後にコピー

任意の数のパラメータを受け入れることができますが、許可されるのは次のとおりです。式が 1 つ含まれており、式の結果は次のようになります。 関数の戻り値については、単純に例を書くことができます:

(lambda x:x**2)(5)
ログイン後にコピー

output:

25
ログイン後にコピー
ログイン後にコピー

リスト内の要素をフィルタリング

では、リスト内の要素をフィルターするにはどうすればよいでしょうか? 毛織物でしょうか?ここでは、ラムダ関数と filter() メソッド、および filter() メソッドの構文形式を組み合わせる必要があります。

filter(function, iterable)
ログイン後にコピー

function -- 判定関数
  • iterable --使用可能な反復オブジェクト、リスト、または辞書
  • このようなリストがあります:
import numpy as np
yourlist = list(np.arange(2,50,3))
ログイン後にコピー

2 乗後の 100 未満の要素をフィルターで除外したいので、匿名を定義しましょう関数は次のようになります:

lambda x:x**2<100
ログイン後にコピー

最終結果は次のとおりです:

list(filter(lambda x:x**2<100, yourlist))
ログイン後にコピー

出力:

[2, 5, 8]
ログイン後にコピー

複雑な計算プロセスが発生した場合でも、エディターはそうすることを推奨します。自分で関数をカスタマイズしますが、単純な計算処理であれば、ラムダ匿名関数が間違いなく最良の選択です。

map() 関数との併用

map() 関数の構文は、次の匿名関数のように、上記の filter() 関数と似ています。 ##これは、map() メソッドと組み合わせて使用​​されます:

lambda x: x**2+x**3
ログイン後にコピー

出力:

list(map(lambda x: x**2+x**3, yourlist))
ログイン後にコピー

もちろん、前に述べたように、ラムダ匿名関数は複数のパラメータを受け入れることができますここで試すことができます。たとえば、リストのセットが 2 つあります。

[12,
 150,
 576,
 1452,
 2940,
 5202,
 ......]
ログイン後にコピー

また、map() メソッドを使用して操作します。コードは次のとおりです。

mylist = list(np.arange(4,52,3))
yourlist = list(np.arange(2,50,3))
ログイン後にコピー

output:

list(map(lambda x,y: x**2+y**2, yourlist,mylist))
ログイン後にコピー

と apply() メソッド 共同の use

apply() メソッドは Pandas データ テーブルでよく使用され、ラムダ匿名関数が apply() メソッドに組み込まれます。データ テーブルは次のとおりです:

[20,
 74,
 164,
 290,
 452,
 650,
 884,
 1154,
......]
ログイン後にコピー

出力:

myseries = pd.Series(mylist)
myseries
ログイン後にコピー

apply() メソッドの使用方法は、map() メソッドと filter() メソッドの両方で、前の 2 つとは少し異なります。 、反復可能なオブジェクトをそれに入れる必要があります。ここでは apply() は必要ありません:

04
17
2 10
3 13
4 16
5 19
6 22
7 25
8 28
......
dtype: int32
ログイン後にコピー

output:

myseries.apply(lambda x: (x+5)/x**2)
ログイン後にコピー

そして、DataFarme テーブル データが見つかった場合も、同じ操作が実行されます。

0 0.562500
1 0.244898
2 0.150000
3 0.106509
4 0.082031
5 0.066482
6 0.055785
7 0.048000
......
dtype: float64
ログイン後にコピー

出力:

df = pd.read_csv(r'Dummy_Sales_Data_v1.csv')
df["Sales_Manager"] = df["Sales_Manager"].apply(lambda x: x.upper())
df["Sales_Manager"].head()
ログイン後にコピー

そして、apply() メソッドを使用して処理する方が、str.upper() メソッドを使用して直接処理するよりも高速です。 !

使用に適さないシナリオ

では、使用に適さないシナリオとは何でしょうか?まず第一に、ラムダ関数は匿名関数として、次のような変数に代入するのには適していません:

0PABLO
1PABLO
2KRISTEN
3ABDUL
4 STELLA
Name: Sales_Manager, dtype: object
ログイン後にコピー

それに比べて、関数をカスタマイズして処理する方が良いでしょう。

squared_sum = lambda x,y: x**2 + y**2
squared_sum(3,4)
ログイン後にコピー

出力:

def squared_sum(x,y):
return x**2 + y**2

squared_sum(3,4)
ログイン後にコピー

次の状況に遭遇した場合、コードを少し簡略化できます:

25
ログイン後にコピー
ログイン後にコピー

出力:

import math
mylist = [10, 25, 40, 49, 65, 81]
sqrt_list = list(map(lambda x: math.sqrt(x), mylist))
sqrt_list
ログイン後にコピー

次のように簡略化できます。 :

[3.16227766, 5.0, 6.324555320, 7.0, 8.062257748, 9.0]
ログイン後にコピー

output:

import math
mylist = [10, 25, 40, 49, 65, 81]
sqrt_list = list(map(math.sqrt, mylist))
sqrt_list
ログイン後にコピー

Pythonの組み込み関数、特に数学などの算術に使用されるモジュールの場合は、ラムダ関数内に置く必要はありませんが、直接引き出して使用することもできます

以上がPython での Lambda 関数の使用法に関する簡単な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:51cto.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート