メモ代わり。てきとーに。 いや、ですからてきとーですって。 2年前ぐらいにPythonあたりでメールくれた方、ごめんなさい。メール紛失してしまい無視した形になってしまいました。。。

2008年2月11日月曜日

[Python][お勉強] Python入門(27) - lambda式

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