lambdaをなんとなくで使用してきて、混乱することがよくあるので整理しました
一緒に使われているイメージのあるmap関数についてもまとめています
結論
基本形と例になります
lambda
基本形
(lambda 引数: 戻り値)(渡す値)
例
(lambda x: x*2)(2)
結果
4
lambda+map
基本形
map(lambda 引数: 戻り値, iterable(listやdictなど))
例
list(map(lambda x: x*2, [1, 2, 3]))
結果
[2, 4, 6]
lambda
lambdaとは?
lambdaは無名関数を使用するための記法になります
名前付きの関数を作成するほどではない簡単な処理をしたいときに使用されます
基本形
lambda 引数: 戻り値
次のような関数と同じ意味になります
def func(引数):
return 戻り値
引数を渡す場合
(lambda 引数: 戻り値)(渡す値)
実際に動かしてみると次のようになります
l = (lambda x: x*2)(2)
print(l)
l = (lambda x, y: x*y)(2, 4)
print(l)
4
8
lambda+map
map関数とは?
map関数は、listなどの各要素に処理を行いたい場合使用されます
基本形
map(callable, iterable)
callableとは?
関数のように呼び出すことができるオブジェクトのことです
関数以外にはクラスなどが当てはまります
iterable とは?
繰り返し可能なオブジェクトのこと
for文で回せるオブジェクトの認識でよさそうです
iterableの例としては、listやdictなどがあります
実際に動かしてみると次のようになります
map関数の返却値はmapオブジェクトのため、値を取得するためにはlistに変換する必要があります
def func(x):
return x*2
l = list(map(func, [1,2,3]))
print(l)
[2, 4, 6]
次にfunc関数をlambdaと置き換えてみます
こうすることで簡単な処理であれば、1行で実行することができます
map(lambda 引数: 戻り値, iterable)
実際に動かしてみると次のようになります
引数が複数の場合も試してみました
l = list(map(lambda x: x*2, [1, 2, 3]))
print(l)
l = list(map(lambda x, y: x*y, [1, 2, 3], [1, 2, 3]))
print(l)
[2, 4, 6]
[1, 4, 9]
終わり
lambda、map関数について整理しました
lambdaというよりmap関数の理解が不足していて、混乱していたような気がしました