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

2008年2月11日月曜日

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

今日はlambda式。

Lispから来た名前だそうで。

lambda式とは
defステートメントのように関数を作成する際に使用するもの。
defステートメントとは違い「式」。よってdefステートメントでは記述できない場所に記述することが可能。
また、defステートメントでは関数の名前を記述できたが、lambda式では意図的に代入しない限り名前がない。つまり無名関数生成式ということ。

lambda式のシンタックス

  1. lambda <arg1>,<arg2>,...<argN>: <expressions>  


の形をとる。

実際に書いてみる。
まずdefステートメントから、
  1. >>> def func(x,y,z): return x + y + z  
  2. ...  
  3. >>> func(2,3,4)  
  4. 9  
  5. >>>  

なんてのがあったとする。
これをlambdaで書き直すと・・・、
  1. >>> func = lambda x, y, z: x + y + z  
  2. >>> func(2,3,4)  
  3. 9  
  4. >>>  

な感じか。
lambdaでは名前がないので、名前に相当する変数にlambda式の結果を代入している。
defステートメントと同様にキーワード引数やデフォルト値も設定できる。

  1. >>> func = lambda x,y=10,z=30: x + y + z  
  2. >>> func(x=1)  
  3. 41  
  4. >>>  



lambda式の特徴。
lambda式は「式」なので、defステートメントでは記述できない場所に記述できる。
たとえば
  1. >>> L=[(lambda x: x**2),(lambda x: x**3),(lambda x: x**4)]  
  2. >>> for f in L:  
  3. ...   print f(2)  
  4. ...  
  5. 4  
  6. 8  
  7. 16  
  8. >>>  

のように[]中に記述できる。なにせ「式」なので。





おしまい。
.

0 コメント: