Pythonのラムダ式と組み合わせる便利な関数まとめ!初心者でもわかる使い方
生徒
「先生、Pythonのラムダ式ってよく聞くけど、どんな関数と一緒に使うと便利なんですか?」
先生
「いい質問ですね。ラムダ式は小さな関数をさっと作れるので、Pythonに元からある便利な関数と組み合わせると、とても役立ちますよ。代表的な関数をいくつか紹介しましょう。」
生徒
「ぜひ教えてください!」
先生
「では、順番に見ていきましょう。」
1. map関数とラムダ式
map関数は、リストやタプルのすべての要素に同じ処理をしたいときに使います。mapの中にラムダ式を入れると、処理を簡単に指定できます。
例えば、数字リストのすべてに2をかけたい場合は、
numbers = [1, 2, 3, 4, 5]
result = list(map(lambda x: x * 2, numbers))
print(result)
こうすると、[2, 4, 6, 8, 10]が出力されます。mapは、すべての要素に順番にラムダ式の処理を適用してくれます。
2. filter関数とラムダ式
filter関数は、条件に合う要素だけを取り出したいときに使います。ラムダ式で条件を指定することが多いです。
例えば、リストの中から偶数だけを取り出したい場合は、
numbers = [1, 2, 3, 4, 5, 6]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers)
結果は[2, 4, 6]となり、偶数だけ抽出できます。
3. sorted関数とラムダ式
sortedはリストやタプルを並べ替える関数です。ラムダ式を使って、並べ替えの基準を自分で指定できます。
例えば、リストの中のタプルを2番目の値でソートしたい場合は、
items = [(1, 3), (2, 1), (3, 2)]
sorted_items = sorted(items, key=lambda x: x[1])
print(sorted_items)
出力は[(2, 1), (3, 2), (1, 3)]となり、2番目の数字を基準に並べ替えられます。
4. reduce関数とラムダ式
reduceはリストの要素を順番にまとめて1つの値にするときに使います。Python 3ではfunctoolsモジュールから使います。
例えば、リストの合計を計算するとき、
from functools import reduce
numbers = [1, 2, 3, 4, 5]
total = reduce(lambda x, y: x + y, numbers)
print(total)
結果は15です。reduceはリストの左から順にラムダ式を使って計算をまとめていきます。
5. any関数とall関数とラムダ式
anyは「条件を満たすものが一つでもあればTrue」を返します。allは「すべて満たせばTrue」です。リストの要素をラムダ式でチェックしてから使うことも多いです。
例えば、リストに偶数があるか調べるには、
numbers = [1, 3, 5, 7, 8]
has_even = any(map(lambda x: x % 2 == 0, numbers))
print(has_even) # True
すべてが正の数か調べるには、
numbers = [1, 3, 5, 7, 8]
all_positive = all(map(lambda x: x > 0, numbers))
print(all_positive) # True
6. ラムダ式を使うときのポイント
- 簡単な処理を一行で書きたいときに便利
- 複雑な処理は普通の関数
defで書いたほうがわかりやすい - 読みやすさを考えて、無理に使わない
- 慣れるまでは例を見ながら練習する
7. ラムダ式と一緒に使うと便利なPython関数一覧
ここまで紹介した以外にも、ラムダ式と相性の良い関数はたくさんあります。主に「リストの要素に対して処理をする」関数です。
map():すべての要素に同じ処理をするfilter():条件に合う要素だけを取り出すsorted():好きな条件で並べ替えるreduce():要素をひとつにまとめるany():条件を満たすものがあるかチェックall():すべての条件を満たすかチェック
これらの関数を上手に使うと、Pythonのコードがすっきり短く書けて、処理もわかりやすくなります。