lambda関数(無名関数)
Pythonの関数には、無名関数と呼ばれるものがあり、これを使うと、コードを簡素化できます。Pythonでは無名関数のことをラムダ関数と呼びます。
無名関数とは、その名前の通り、名前がない関数で、関数をその場に記述する記法です。
ラムダ関数を書くには、lambdaというキーワードを使います。普通の関数を作るときと同じで、lambdaと記述して引数を設定した後、その処理を記述します。
例として、掛け算をするcalc_multi関数を採り上げます。この関数は次のように、defで定義しておき、それから実行しました。
掛け算を行う通常の関数の例
# calc_multi関数を定義 def calc_multi(a, b): return a * b # それを実行 calc_multi(3, 10)
結果
30
関数を一旦変数に代入した後に実行する例
calc = calc_multi calc(3, 10)
結果
30
「lambda」というキーワードを使って、無名関数として書くと次のように書けます。
(lambda a, b: a * b)(3, 10)
結果
30
ここで「lambda a, b:」というのが、「calc_multi(a, b)」に相当する部分です。
そして「:」で区切って、その関数の処理(ここでは`return a * b`)を記述するというのが、無名関数の基本的な書き方です。
わかりやすい記述は次のようになります。
ラムダ関数を定義してから一旦変数に代入し、その後、変数名で関数を実行しています。
calc = lambda a, b: a * b calc(2,10)
結果
20
map関数
Pythonの、map() はリストやタプルのすべての要素に同じ演算を適用する関数です。
正確には [関数] と [イテラブルオブジェクト] を受け取って、[イテラブルオブジェクト] の各要素を関数に渡して各要素の戻り値を要素にもつイテレータを生成します。
無名関数は、リストなどに含まれる要素に対して何か関数を実行したいときに、よく使います。
要素に対して、何か処理したいときは、map関数を使います。map関数は、高階関数と呼ばれ、関数を引数や戻り値として使う関数で、各要素に対して、何か処理や操作したいときに使います。
例えば、次のように要素の値を2倍にして返す関数calc_doubleを定義するとします。
numbers = [1,2,3,4] def calc_double(x): return x * 2 map(calc_double, numbers)
結果