Pythonのlambda(ラムダ式)の使い方を徹底解説します
18/12/09 15:14:08 19/05/05 16:04:29
lambdaとは、関数を定義せずに一文で関数風に処理するためのコードです。
繰り返し似たような処理を行う際は関数を定義した方が効率的なのですが、たとえばそこで一回使用するだけのロジックであれば、わざわざ関数を定義するのは冗長です。
関数を定義せずに一行で効率的にコーディングするためのコードがlambdaです。概要はこのようなイメージなのですが、実例を見た方がわかりやすいでしょう。そこでこのページでは、lambdaのサンプルコードを積極的に入れつつ解説していきます。
逆に言えば、ソースコードでイメージできていればあえて日本語の定義で覚えておく必要はないかもしれません。
目次
Python関連記事
- Pythonでできることとは?人工知能で強みを発揮!
- Pythonのインストール方法をまとめてみた
- Pythonプログラミングに便利なAnacondaとは?機能やPycharmとの違いを解説
- PythonでAnacondaをインストールする方法から実際の使い方までを解説
- Pythonの配列を徹底解説!宣言や追加・削除など
- Pythonのif文の使い方を解説!演算子もおさらい
- Pythonのfor文の使い方を配列で解説!breakやrangeの使い方もこれでOK
- Pythonのlambda(ラムダ式)の使い方を徹底解説します →この記事
- Pythonの高階関数map/filterの便利な使い方
- Pythonでclassをどう使う?技術顧問に聞いてみた!
lambdaの基本的な用法
それではさっそくlambdaの基本的な書き方をサンプルコードで確認します。
以下は税込価格を計算するコードです。
#関数定義して実装する場合
def taxCaluculate(basePrice, consumptionTax):
return basePrice + (basePrice * consumptionTax)
payment = func(100,0.08)
print(payment1)
#lambda式を用いる場合
print((lambda basePrice, consumptionTax: basePrice + (basePrice * consumptionTax))(100,0.08))
上記のソースコードを実行すると、以下のようにコンソール出力されます。
108.0
108.0
まず前半部分ではlambdaを使用せずに関数を定義して計算を行っています。
taxCaluculateという名前の関数で、引数にbasePrice、consumptionTaxを取り、計算結果を戻り値として返します。
後半部分では、同様のことをlambdaを使用して行っています。lambdaの後ろに引数をセットし、セミコロンの後ろに関数と同じ処理内容の記述を行います。これで関数で記述した場合と同じ処理が行われます。
比較すると、関数で記述するよりも記述が少なく済むことがわかるかと思います。たとえば上記の計算式を何度も使用するなら関数で定義した方が良いのですが、一回しか使用しないならlambdaで書いた方がシンプルですね。
またlambdaを使用することで、他の人がソースコードを見た際に頻繁に使用するロジックでないことがわかります。自分だけでなく他人が見たときに処理がわかることもプロジェクトにおいては重要なので、これも大きなメリットと言えるでしょう。
次に、lambdaは引数なしで記述することも可能です。引数のない関数がある以上、lambdaでも同じことを実現する必要があるからです。具体的には、以下のような記述になります。
nothingArgument= (lambda: '引数なしのラムダ')()
print(nothingArgument)
上記のコードを実行すると、「引数なしのラムダ」と出力されます。
引数なしで変数に文字列を直接格納し、それをそのまま出力しました。
実際このように文字列を出力するだけならlambdaを使用する必要はないので、引数ありで使用することの方が多いでしょう。
lambdaの応用的な用法
lambdaの引数ありとなしの基本的な用法を紹介しましたが、次に応用的な使い方を紹介します。
応用的といっても特別難しいものではなく、for文やif文と組み合わせてより実際のシステム開発に近い使い方を紹介するだけです。
for文と同じようにlambdaで処理する方法
for文と同じ使い方をするlambdaのサンプルコードを紹介しますが、わかりやすいようにfor文を使用した書き方と対比させて紹介します。以下は元の商品の値段に対して消費税を加えた金額に書き換えるプログラムです。
basePrices = [3000,2500,10500,4300]
paymentList = []
for basePrice in basePrices:
paymentList.append(basePrice * 1.08)
print(paymentList)
上記のコードを実行すると、以下のようにコンソール出力されます。
[3240.0, 2700.0, 11340.0, 4644.0]
8%の消費税を加えた金額が出力されました。
上記のソースコードとまったく同じ内容をlambdaを使って実行すると、以下のようになります。
basePrices = [3000,2500,10500,4300]
paymentList = list(map(lambda basePrice: basePrice * 1.08 , basePrices))
print(paymentList)
上記のソースコードを実行すると、以下のようにコンソール出力されます。
[3240.0, 2700.0, 11340.0, 4644.0]
まったく同じ結果になりました。
for文の方では配列の宣言を先に行いましたが、lambdaを使用すれば配列の宣言と同時に処理を実行することが可能です。結果的にソースコードは冗長さがなくなりました。
if文の代わりにlambdaを使用する方法
for文同様、lambdaはif文の代わりに使用することも可能です。
それでは、if文、lambdaそれぞれのサンプルコードを紹介します。
basePrices = [3500,2000,10000,4100]
paymentList = []
for basePrice in basePrices:
if basePrice > 4000:
paymentList.append(basePric)
paymentList.sort()
print(paymentList)
上記のソースコードを実行すると、以下のようにコンソール出力されます。
[4100, 10000]
税抜き価格が4000円より大きい商品を抜き出してソートするイメージです。これと同様の処理をlambdaを使用して記述すると以下のようになります。
basePrices = [3500,2000,10000,4100]
priceList = list(filter(lambda basePrice: basePrice > 4000, basePrices))
priceList.sort()
print(priceList)
上記のソースコードを実行すると、if文を使用した場合とまったく同じ結果が返ってきます。
lambdaのなかで条件式を実行することが可能で、なおかつ配列やリストに対して処理を記述すると要素の数分実行されます。
lambdaは慣れるまで記述があっているのかどうか不安になるかもしれませんが、慣れると非常に便利なコードです。コピペして書き換えれば基本的に問題ないので、積極的に使用すると良いでしょう。
ただし可読性の問題からfor文やif文の記述を優先しているプロジェクトなどもあります。その場合あまり使えないのですが、比較的新しく融通の利きやすいプロジェクトや、個人開発においてはおすすめできるコードです。
関数、if文、for文などが出てきたら、lambdaで書くことはできないか、lambdaで書いた方が効率的ではないか、といった視点を持つと良いかと思います。慣れてくればif文、for文、関数等と同様に、自然とlambdaを使ったコードがイメージできるようになります。
案件量が豊富なアルマサーチ
最後に、アルマサーチのご紹介!
アルマサーチはフリーランス向けに案件をご紹介することに特化したエージェントサービスです。豊富な案件量から、安定して継続的な案件のご紹介を実現しており、口コミから登録エンジニアが急増中です。
アルマサーチが選ばれる理由
- 豊富な案件量。週3?4日の案件や在宅リモート案件も。
- 優秀なコンサルタント陣。
- 案件に参画後もしっかりサポート。
豊富な案件量
フリーランス向けに特化し、業界屈指の案件量を誇ります!週3?4日の案件や、在宅リモート案件もありますし、その他あらゆる希望をしっかりお伝えください。最適な案件のご紹介をさせていただきます。
優秀なコンサルタント陣
技術に疎く、開発の希望を伝えても響かないエージェント・・・嫌ですよね。アルマサーチにはそのような者は一切おりません!さらに独立にまつわる税金や保険関係に詳しいスタッフが徹底的にサポートさせていただきます。
案件に参画後もしっかりサポート
常駐先が決まった瞬間に、一度も連絡が取れなくなるエージェント・・・いますよね?アルマサーチでは、そのようなことは一切ありません!常に電話やメールは即対応しますし、月に1度のランチミーティングなどから現場の状況を細かくヒアリングし、就業環境改善に尽力いたします。
Python関連記事
1,【Pythonのフリーランス求人・案件情報】エンジニア開発単価は?未経験でもいける?
2,Pythonでできることとは?人工知能で強みを発揮!
3,Pythonのインストール方法をまとめてみた
4,Pythonプログラミングに便利なAnacondaとは?機能やPycharmとの違いを解説
5,PythonでAnacondaをインストールする方法から実際の使い方までを解説
6,Pythonの配列を徹底解説!宣言や追加・削除など
7,Pythonのif文の使い方を解説!演算子もおさらい
8,Pythonのfor文の使い方を配列で解説!breakやrangeの使い方もこれでOK
9,Pythonのlambda(ラムダ式)の使い方を徹底解説します(この記事)
10,Pythonの高階関数map/filterの便利な使い方
11,Pythonでclassをどう使う?技術顧問に聞いてみた!
人気記事