ラムダ式は、再利用する必要のない比較的小さな関数を無名で簡潔に定義します。使いどころは関数を引数や返り値とする関数(高階関数)において引数として渡す関数を定義する場合です。
filter()
フィルターの条件を指定するためにラムダ式を使います。次の例ではフィルターで90以上の値だけを取り出して新しいリストを作成しています。
num_list = [100, 200, 50, 40]
results = filter(lambda num : num > 90, num_list)
print(list(results))
# [100, 200]
map()
リストに対して順次実行する処理をラムダ式で渡します。次の例では名前の文字列の前に’Mr.’を付加しています。
name_list=['Taro','John','Louis']
list(map(lambda name: 'Mr. ' + name, name_list))
# ['Mr. Taro', 'Mr. John', 'Mr. Louis']
次の例はリストの要素を2乗して新たなリストを作ります。
num_list = [1, 3, 4, 6, 10]
new_list = list(map(lambda x: x ** 2, num_list))
# [1, 9, 16, 36, 100]
sort(), sorted()でkeyを指定
ソートの条件をラムダ式で指定することができます。最初の例ではageでソートしています。2番目の例ではnameの文字列の長さでソートしています。
data = [
{"name": "Yanagihara", "age": 14},
{"name": "Takeda", "age": 48},
{"name": "Kan", "age": 31}
]
print(sorted(data, key = lambda x: x["age"]))
# [{'name': 'Yanagihara', 'age': 14}, {'name': 'Kan', 'age': 31}, {'name': 'Takeda', 'age': 48}]
print(sorted(data, key = lambda x: len(x["name"])))
# [{'name': 'Kan', 'age': 31}, {'name': 'Takeda', 'age': 48}, {'name': 'Yanagihara', 'age': 14}]
コメント