Pythonでのlambda式
1068 ワード
一、lambda式形式
Lambdaの後ろには1つ以上のパラメータが付いていて、1つのコロンに続いています.その後は式です.コロンの前はパラメータで、コロンの後は戻り値です.
Lambdaは文ではなく式です.
Lambda式はPython構文がdefの出現を許さない場所に現れることができる.
Lambda式は値を返します.
二、defとの区別
Lambdaは簡単な関数を記述するために使用され、再利用されない関数です.
defは強力なタスクを処理するために使用されます.
三、例を挙げる
1、
2、
解析:funは関数配列であり、iはグローバル変数であり、9である.fun[3](4)はfunの3番目の関数を呼び出し、nは3に割り当てられるため、結果は13となる.同じ理屈でfun[4](4)の値は13である.
以下に変更します.
出力結果は:7,8です.欲しい結果のために.
3、filter/map/reduceといういくつかの関数を使ったことがあると、lambda式は本当に匿名関数の書き方に非常に時間と労力を節約していることがわかります.
出力結果:
[0, 2, 4, 6, 8]
[1, 4, 9]
5050
Lambdaの後ろには1つ以上のパラメータが付いていて、1つのコロンに続いています.その後は式です.コロンの前はパラメータで、コロンの後は戻り値です.
Lambdaは文ではなく式です.
Lambda式はPython構文がdefの出現を許さない場所に現れることができる.
Lambda式は値を返します.
二、defとの区別
Lambdaは簡単な関数を記述するために使用され、再利用されない関数です.
defは強力なタスクを処理するために使用されます.
三、例を挙げる
1、
fun = lambda x,y,z : x + y + z
print fun(1, 2, 3)
出力結果:62、
fun = [(lambda n : i + n) for i in range(10)]
print fun[3](4)
print fun[4](4)
出力結果13,13、望ましくない7,8解析:funは関数配列であり、iはグローバル変数であり、9である.fun[3](4)はfunの3番目の関数を呼び出し、nは3に割り当てられるため、結果は13となる.同じ理屈でfun[4](4)の値は13である.
以下に変更します.
fun = [(lambda n,i = i : i + n) for i in range(10)]
print fun[3](4)
print fun[4](4)
出力結果は:7,8です.欲しい結果のために.
3、filter/map/reduceといういくつかの関数を使ったことがあると、lambda式は本当に匿名関数の書き方に非常に時間と労力を節約していることがわかります.
print filter(lambda x : x % 2 == 0, range(10))
print map(lambda x, y : x * y, range(1,4), range(1,4))
print reduce(lambda x, y : x + y, range(101))
出力結果:
[0, 2, 4, 6, 8]
[1, 4, 9]
5050