【Pythonプログラミング】Lambda関数の使い方

こんにちは。今日はPythonのLambda関数について調べてみようと思います。私はデータ分析や機械学習・統計モデリングをするようになってPythonを学びはじめたのですが、Kaggleなどのコンペで他の人のコードを見ていると、このLambda式を使っているケースが多く、気になってきた次第だったのであります。

自分もLambdaをさらっと使いこなせるようになりたい・・・

それでは参ります!

Lambda式とは?

無名関数という、名前を定義する必要のない小さな関数を作るための機能になります。

ほう。定義はわかったけれど、これを使うと何が嬉しいの?

この疑問については後半で実例で解説していきます。

Lambda式の書き方

lambda [引数]:[処理]

ものは試し、早速コードを書いてみる。

以下は、通常のPythonの関数。足し算をするだけの関数である。

def add(a,b):
    return a+b

c = add(2,1)
print(c)
#3

これをLambda式を使うと、こう書けるらしい。

add = lambda a,b: a+b
c = add(1,2)
print(c)
#3

なるほど、確かにdefを使った関数と同じことがこの一行でもできるようである。

ただ、これだと、わざわざLambda式をメリットがよくわからないので、Defとの違いは何なのか?Lambda式の長所は何なのかを調べてみました。

Lambda式とDefの違い

色々なWebサイトにも解説されていますが、DefはPython上「文」(Statement)として扱われるのに対して、Lambda式は「式」(Expression)として扱われます。

つまり、文の場合は式中で使うことができないですが、式は式中で使うことができるということです。つまり、Map関数やSort関数などの中で処理を記述するときに、威力を発揮するということです。

具体的に、Lambda式が威力を発揮するケースをみていきたいと思います。

Lambda式が威力を発揮するケース

Map関数と合わせて使う

1つ目は、Map関数の中で使うケースです。PythonのMap関数は、リストやタプルの全ての値に対して、同じ演算を適用するために使われるもので、以下のような形式で記述します。

Map(引数, イテレータ)

例えば、0から9までの数に、2乗して1を足す処理をかけたいとします。

defで定義する関数を使うと、以下のようにかけます。

def calc(x):
    return x*x+1

num_list = [0,1,2,3,4,5,6,7,8,9]

list2 = map(calc, num_list)
print(list(list2))

#[1, 2, 5, 10, 17, 26, 37, 50, 65, 82]

これを、Lambda式を使うと、以下のように1行で済みます。

num_list = [0,1,2,3,4,5,6,7,8,9]

list2 = map(lambda x:x*x+1, num_list)
print(list(list2))

うん、これは確かにdef定義する必要がなく楽だ。Map関数と相性が良いことは分かった!

Sort関数と合わせて使う

お次はSort関数。

0

この記事を気に入っていただけたらシェアをお願いします!

コメントを残す

メールアドレスが公開されることはありません。

ABOUT US

アバター
Yuu113
初めまして。Yuu113と申します。 兵庫県出身、東京でシステムエンジニアをしております。現在は主にデータ分析、機械学習を活用してビジネスモデリングに取り組んでいます。日々学んだことや経験したことを整理していきたいと思い、ブログを始めました。旅行、カメラ、IT技術、江戸文化が大好きですので、これらについても記事にしていきたいと思っています。