今日は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 コメント:
コメントを投稿