今日はlambda式。
Lispから来た名前だそうで。
lambda式とは
defステートメントのように関数を作成する際に使用するもの。
defステートメントとは違い「式」。よってdefステートメントでは記述できない場所に記述することが可能。
また、defステートメントでは関数の名前を記述できたが、lambda式では意図的に代入しない限り名前がない。つまり無名関数生成式ということ。
lambda式のシンタックス
lambda <arg1>,<arg2>,...<argN>: <expressions>
の形をとる。
実際に書いてみる。
まずdefステートメントから、
>>> def func(x,y,z): return x + y + z
...
>>> func(2,3,4)
9
>>>
なんてのがあったとする。
これをlambdaで書き直すと・・・、
>>> func = lambda x, y, z: x + y + z
>>> func(2,3,4)
9
>>>
な感じか。
lambdaでは名前がないので、名前に相当する変数にlambda式の結果を代入している。
defステートメントと同様にキーワード引数やデフォルト値も設定できる。
>>> func = lambda x,y=10,z=30: x + y + z
>>> func(x=1)
41
>>>
lambda式の特徴。
lambda式は「式」なので、defステートメントでは記述できない場所に記述できる。
たとえば
>>> L=[(lambda x: x**2),(lambda x: x**3),(lambda x: x**4)]
>>> for f in L:
... print f(2)
...
4
8
16
>>>
のように[]中に記述できる。なにせ「式」なので。
おしまい。
.
0 コメント:
コメントを投稿