Python: lambda式を使う
Pythonプログラムにおいて、複数回同じ作業を実施したいときは関数を定義して実行しますが、関数に名前を付けずに簡潔に宣言するlambda式を使った書き方をまとめます。
開発環境について
$wmic os get caption >Microsoft Windows 10 Pro $wmic os get osarchitecture >64ビット $python -V Python 3.7.6
目次
基本の書き方
lambda 引数: 処理内容
のように書く。
通常の関数を用いた書き方
import numpy as np import pandas as pd def calc(value, add): return value + add print(calc(1,0.2))
lambda式を用いる場合
print((lambda value,add:value+add)(1,0.2))
listを対象としたlambda式での処理
lambda, mapメソッドを組み合わせる
mapメソッドの書き方: map(関数, リスト)
#データ values = np.arange(100) #lambda関数 print(list(map(lambda value:value+0.2, values)))
DataFrameを対象としたlambda式での処理
基本の使い方
lambda, applyメソッドを組み合わせる
#データ df_values = pd.Series(np.arange(100)) #lambda関数 df_calc_value = df_values.apply(lambda x: x*2) print(df_calc_value)
※2次元配列では、applyメソッドではなくapplymapメソッドを使用する
出力結果は以下の通り
0 0 1 2 2 4 3 6 4 8 ... 95 190 96 192 97 194 98 196 99 198 Length: 100, dtype: int64
if文処理含めたもの
同じくlambda, applyメソッドを組み合わせて使用する
lambda 引数 "Trueの処理" if 条件式 else "Falseの処理"
#データ df_values = pd.Series(np.arange(100)) #lambda関数 df_calc_value = df_values.apply(lambda x: 100 if x > 10 else 0) print(df_calc_value)
出力結果は以下の通り
0 0 1 0 2 0 3 0 4 0 ... 95 100 96 100 97 100 98 100 99 100 Length: 100, dtype: int64
まとめ
今回は無名関数と呼ばれるlambda式の書き方についてまとめました。
すべてを関数として書くと、コードが長くなってしまい、可読性が下がる場合があるので、意識して使いこなしていきたいですね