lambda(ラムダ)式(無名関数)て聞いた事あるけど,一体何がいいの?関数defを定義してるけど,1回しか使わないから,もっとスキッリした書き方はないだろうか?こんな疑問をお持ちに皆様に本記事はlambda式の解説から使い方を解説していきます.
スポンサーリンク
lambda(ラムダ)式て何
初めにlambda式を知らなくてもプログラムは書けます.ではなぜ,lambda式でプログラムを書くのかそれは便利だからです.lambda式は関数を定義することができ,無名関数と呼ばれています.作りたい関数を1行にまとめる事ができるのがポイントです.
lambda 引数1,引数2,….:計算式
・単純な掛け算をlambda式を使って書いてみましょう.
[IN]
lambda a,b :a*b
print((lambda a,b :a*b)(a=2,b=5))
[OUT]
10
lambda式で繰り返し処理
lambdaで繰り返し処理をするときはmap()関数を使います.
map()関数は関数(計算式)をリストに記載された順に当てはめて計算を行い値をを返します.以下にmap()関数の書式を記載します.
map(関数,リスト)
・品物をセールの時に20%OFFで売る時の売値をmap()関数とlambdaを使って作成します.
[IN]
items = [2000,3000,4000,5000] #品物の価格リスト
sale=list(map(lambda i : i *0.8, items ))#map()で繰り返す.
print(sale)
[OUT]
[1600.0, 2400.0, 3200.0, 4000.0]
1行で関数を使った繰り返し計算ができました.
lambda式でif文と組み合わせる
lambda式でif文を書くには三項演算子を用います.
(条件がTRUEの時の計算式) if(条件式) else(条件がFLSEの時の計算式)
lambda式でif文を使う三項演算子を使うには,lambdaの書式の後に三項演算子を書きます.
lambda 引数1,引数2,…:三項演算子
・先程のセールで品物の価格が4000円以上は30%割引とし、それ以外は20%割り引きにしたときの価格を求めます.
この条件で三項演算子の部分は
i*0.7 if i>=4000 else i*0.8
書式を文章にすと以下のようになります.
TRUEの時は30%割引, 条件は品物が4000以上,偽の時は20%割引
[IN]
items = [2000,3000,4000,5000] #品物の価格リスト
sale=list(map(lambda i : i *0.7 if i>=4000 else i*0.8 , items ))
print(sale)
[OUT]
[1600.0, 2400.0, 2800.0, 3500.0]
これでIF文も繰り返しも1行で書けるようになりました.
スポンサーリンク
コメント