ラムダ(λ)式と云う不思議な関数

そもそもlambda(ラムダ)という用語について、ビギナーの私には名前しか知りませんでしたが、どうも便利なようだとあちこちで読むようになりここに纏めてみます。

lambda式とは、関数に名前を付けずに定義するものだそうです。

① 簡単な関数を置き換える例

#lambda式を使わずに通常の関数を用いる場合

def func(価格,税率):
    return 価格 + (価格*税率)

print(func(100,0.1)) # 110.0と表示される

  ———————-

#lambda式を用いる場合
print((lambda 価格,税率:価格 + (価格 * 税率))(100,0.1)) # 110.0と表示される

ラムダ式を使わない例ではcodeが3行必要でしたが、ラムダ式では1行で済みます。 簡潔ですよね。

 

② lambda式でfor文処理を実装する方法

まず普通のcodeの例

価格リスト = [32000, 2500, 10000, 990]
支払 = []

for 価格 in 価格リスト:
    支払.append(価格 * 1.1)
print(支払) —> [35200.0, 2750.0, 11000.0, 1089.0]となる

同じ処理内容を今度はlambda式を利用して実装します。処理内容、処理対象のリストを第一引数、第二引数に指定して利用するmap関数も使います

価格リスト = [32000, 2500, 10000, 990]
print(list(map(lambda 価格:価格 * 1.1 , 価格リスト))—> [35200.0, 2750.0, 11000.0, 1089.0]となる

勿論下でも良い。
価格リスト = [32000, 2500, 10000, 990]
支払 = list(map(lambda 価格:価格 * 1.1 , 価格リスト))
print(支払) —> [35200.0, 2750.0, 11000.0, 1089.0]となる

ラムダの最初の式の方が明瞭・簡単に見えるけど、僕には下の方が順序だてているので分かり易い。

 

ここに出てきたMap関数のことを実例で説明しますが、ラムダ関数と同じように使えて便利なのです。

③ Map関数を使わないで、小遣いを倍増する例

小遣いリスト = [ 1, 2, 3, 5, 7]
def 二倍にするぞ(x): #「二倍にするぞ」と云うのが関数名、xは何を二倍にするかという引数
    return 2 * x
増額リスト = []
for 小遣い in 小遣いリスト:
    増額リスト.append(二倍にするぞ(小遣い)) 
print(増額リスト) # [2, 4, 6, 10, 14]となります。

④ map関数を使った例

小遣いリスト = [ 1, 2, 3, 5, 7]
def 二倍にするぞ(x):
    return 2 * x
print(list(map(二倍にするぞ, 小遣いリスト))) # [2, 4, 6, 10, 14]となります。listとは[ ]のことです。

 

以上のようにmap関数を使うと、約半分のcode数でプログラムが書けます。

別に使わなくても良い出れど、知っていた方が他の方のプログラムを見た時に理解し易いので覚えておきましょう。

他にも、条件に満たないものを削除するfilter関数と云うのもあります。 これも便利。

 

 

 

 

Python小学館
リストのデータを合算する(ブラックジャックに使用する)

トランプのブラックジャック(BJ)を作るための準備として、点数計算用の関数を作ります。BJはdeal …

Python別館
Python検定試験準備 Q37

Python検定試験と云うのがあるらしいと別項に上げましたが、学習して損することは無いので始めて見ま …

Python小学館
リストボックスから選択する

アプリを作るときによくリストボックスから選択したい場合がよく有ります。 忘れがちなのでここ …