search
LoginSignup
2
Organization

pythonのlambdaとmap関数について

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関数の理解が不足していて、混乱していたような気がしました

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
2