はじめに
こちらはlambda関数に関しての備忘録。
🦁結論🦁
lambda関数は、小規模な匿名関数を一行で定義するための構文。
lambda 引数 : 処理 (引数)
lambda x: x + 1
押さえておくべき点
- 短い処理に使うことでコードの可読性が向上。
- ちょっとした処理を加えたい時に使われる関数。
- 引数は複数指定可能。
利用シーン
- 他の関数の引数として直接記述する場合に有用
- sorted()やlist.sort()のkey引数にlambda関数を使うことがある。
- フィルタリングで使われるfilter()関数の引数として、特定の条件に基づいてリストから要素を選択するために使用されます。
- データ変換などで使われるmap()関数の引数として使用し、リストの全ての要素に対して変換を適用します。
- GUIやWebアプリケーション開発において、簡単なイベントハンドラーを定義するのに利用される。
注意点
- 例外処理はできない。
- 条件分岐などはできない。
Lambda関数をよく使う場面一覧
リストの要素を変換する
map()関数とlambdaを使って、リストの各数値を2倍に。
numbers = [1, 2, 3, 4, 5]
doubled_numbers = list(map(lambda x: x * 2, numbers))
条件に合う要素だけを選ぶ
filter()関数とlambdaを使って、リストから偶数だけを選び出せる。
numbers = [1, 2, 3, 4, 5, 6]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
一時的な小規模計算
2つの数を引数として受け取り、その和を計算する一時的なlambda関数。
result = (lambda x, y: x + y)(5, 3)
複数のリストを同時に処理
namesとagesをzip関数で結合して、それをsorted関数で年齢に基づいてソートする。
# 複数のリストを組み合わせて処理する正しい例
names = ['John', 'Diana', 'Alex']
ages = [30, 35, 25]
people = zip(names, ages) # namesとagesを組み合わせる
sorted_people = sorted(people, key=lambda x: x[1]) # 年齢でソートする
zipによって(‘John’, 30)このタプルが出来上がる。
lambda x: x[1]の引数x[1]はタプルの2番目(0が1番目)を選択してる。
つまり年齢でソート(sorted())するイメージ。
辞書でのソート
各人物の年齢('age')に基づいてソート。
key()→ソートの基準とする部分を選択
# 年齢で人々をソートする
people = [{'name': 'John', 'age': 45}, {'name': 'Diana', 'age': 35}, {'name': 'Alex', 'age': 25}]
sorted_people = sorted(people, key=lambda x: x['age'])
まとめ✍️
Lambdaは上級者のテクニックみたいなものみたいなイメージだったが、そうではなく、意味ある使い方をしてないと意味ないなと感じた。
どんな時に使うべきなのかをより深めて、可読性の観点からも選択をできるようにしていく。