無名関数と言われるLambda関数とは一体何なのか?これまでもこのlambdaという単語はpythonコードの中で何度か目にしてきているが、その時は特に気にすることなく素通りしていた。しかしながら、ここに来て、このlambdaというものに関心がでてきたので、今日はこのlambdaとかいう関数をこのサイトを参考にして勉強する。
スポンサーリンク
Lambda functions: Anonymous functions¶
list(map(lambda x: x**2, [ 1, 2, 3, 4 ] ))
n = 10
sum(map(lambda x: x**2, range(1,n+1)))
sumをlistにすれば、1〜nまでの数字を二乗していくコードになる。
list(map(lambda x: x**2, range(1,n+1)))
named function(名前付き関数)をdefを使ってわざわざ作らなくても、lambdaを使えばcallableのsmall functionを以下のようにして簡単に作成できる。
f = lambda x, y: x + y
f(5,7)
yにデフォルトの値を設定することも可能
f = lambda x, y=8: x + y
f(4)
スポンサーリンク
Applications of lambda functions¶
Lambda関数は、関数が必要でdefを使って定義したくない時に使える。例えば、非線形方程式$x=\sqrt{2.5}$を解きたい場合、
from scipy.optimize import fsolve
import numpy as np
sol, = fsolve(lambda x: 2.5 - np.sqrt(x), 8)
print (sol)
引数として関数を取る関数は、lambda関数を使用できる。下の例は、リスト内の数を合計するためにreduce関数で2つの数を足すlambda functionを使用する。
from functools import reduce
reduce(lambda x, y: x + y, [0, 1, 2, 3, 4])
積分$\int_0^2 x^2 dx$をlambda functionを使って解くことができる。
%precision %e
from scipy.integrate import quad
quad(lambda x: x**2, 0, 2)
何となくだが、lambda関数の使い方が分かったような気がする。
スポンサーリンク
スポンサーリンク