ラムダ式
ラムダ式とは別名を無名関数といい、def文を用いた関数のように名前を割り当てることなく計算式を定義するために利用される。その計算を行う箇所が局所的であるなど、名前付きの関数を定義する必要のない場合に利用される。
最も基本的な形
code:lambda1.py
myfunc1 = lambda x: x*2
print(myfunc1(2)) # (1)
仮引数はxの1個、これを「x*2」した結果を返す関数オブジェクトを生成し、変数myfunc1を割り当てた状態とする。 この場合、(1) のように変数名に引数を与えることで結果を得ることができる。
引数を2個にしてみよう。
code:lambda2.py
myfunc2 = lambda x, y: x*y
print(myfunc2(2, 3))
ここまでの例では、せっかくの無名関数なのに、myfunc*という名前を与えているので片手落ちである。名前を与えずに、使う場所のみで有効な式を定義してみよう。
code:lambda3.py
input_x = 1, 2, 3, 4
output = map(lambda x: x*2, input_x)
for i in output:
print(i)
ラムダ式は式を定義するための命令であるので、それ単体では結果を得ることができない。map関数【builtin】を用いて引数を与えることにより、結果を得ることができる。
引数を2個にしてみよう。
code:lambda4.py
input_x = 1, 2, 3, 4
input_y = 2, 2, 3, 3
output = map(lambda x, y: x*y, input_x, input_y)
for i in output:
print(i)
定義:
lambda 引数の列:計算機式