
One Point of Python “lambda 式”
Python の初心者向けに、知っておけば得するちょっとした豆知識を提供したい。今回は、“lambda式”について取り上げる。
lambda式は関数オブジェクトを作成する手段で無名関数とも呼ばれる。
lambda式は、以下に示すようにdef文を用いずに“式”で定義され、コードを短く記述できる。
>>> def f(x,y,z):
... return x*y*z
...
>>> f(1,2,3)
6
>>> f = lambda x,y,z: x*y*z
>>> f(1,2,3)
6
また、以下のように引数のデフォルト値を設定することもできる。
>>> f = lambda a='li', b='nu', c='x': a+b+c
>>> f()
'linux'
>>> f('u','ni')
'unix'
何が便利なのか? 一度しか使わないような関数やdef文が使えない箇所で使えるメリットがある。例えば、リストのリテラルの中にlambda式を書くこともできる。
>>> l = [(lambda x: x-2), (lambda x: x), (lambda x: x+2)]
>>> for f in l: print(f(10))
...
8
10
12
>>> l[2](20)
22
同様に、辞書でも使うことができる。
>>> table = {'one': lambda x: x+1,
... 'two': lambda x: x+2,
... 'three': lambda x: x+3}
>>> table['three'](10)
13
元々Pythonの文は大抵は同値な論理式に書くことができるので、lambda式で記述できないことはない。意識的に使う場合は別だが、理解しにくいコードになるので程々の範囲での利用が賢明である。
#ビジネス #プログラミング #Python #線形代数 #数学 #AI #IT