Pythonのラムダ式とmap関数を使ったリスト変換の完全ガイド!初心者でもわかる解説
生徒
「Pythonでたくさんの数字や文字を一気に変換する方法ってありますか?」
先生
「はい、Pythonではラムダ式とmap関数を組み合わせることで、リストの中身を一括変換できますよ。」
生徒
「ラムダ式とmap関数…名前だけ聞くと難しそうですね。どうやって使うんですか?」
先生
「心配いりません。とてもシンプルな考え方なので、実際の例を見ながら一緒に学んでいきましょう!」
1. ラムダ式とは?
Pythonのラムダ式は、「一行で書ける簡単な関数」のようなものです。
普通の関数はdefを使って作りますが、ラムダ式はlambdaというキーワードを使い、その場ですぐに作れます。
たとえば、数字を2倍にする関数を作る場合、通常は次のように書きます。
def double(x):
return x * 2
これをラムダ式で書くと、わずか1行になります。
lambda x: x * 2
「lambda 引数: 実行する処理」という書き方が基本形です。
関数に名前をつけずにその場で使えるので、簡単な変換処理に便利です。
2. map関数とは?
map関数は、「リストやタプルの各要素に同じ処理を一括で適用する」ための関数です。
map関数の書き方は次のとおりです。
map(関数, データ)
第一引数には適用する関数(ラムダ式や通常の関数)、第二引数には処理したいリストなどを入れます。
例えば、[1, 2, 3]の各数字を2倍にしたいときは、次のように書きます。
numbers = [1, 2, 3]
result = map(lambda x: x * 2, numbers)
print(list(result))
[2, 4, 6]
このように、map関数は「全員に同じ作業をしてもらう指示書」のようなものです。
3. ラムダ式とmap関数の組み合わせ
ラムダ式とmap関数を組み合わせると、リスト変換がとても簡単になります。
例えば、リストの中の数字をすべて3乗(xの3乗はx * x * x)に変換する場合は、次のように書きます。
numbers = [1, 2, 3, 4]
result = map(lambda x: x ** 3, numbers)
print(list(result))
[1, 8, 27, 64]
このコードでは、lambda x: x ** 3が「数字を3乗にする処理」を表しており、map関数がその処理をリスト内のすべての数字に適用しています。
4. 文字列変換の例
map関数とラムダ式は数字だけでなく、文字列の変換にも使えます。
例えば、すべての文字列を大文字にする場合は次のようにします。
words = ["python", "lambda", "map"]
result = map(lambda s: s.upper(), words)
print(list(result))
['PYTHON', 'LAMBDA', 'MAP']
この場合、s.upper()は文字列を大文字に変換するPythonのメソッドです。
5. 使いどころと注意点
ラムダ式とmap関数は、短く書けて見た目がスッキリするというメリットがあります。
特に「一度きりの簡単な処理」に向いています。
- リストやタプルの全要素をまとめて変換するとき
- 処理が短く、関数をわざわざ定義するほどではないとき
- 可読性を保ちながらコードを簡潔にしたいとき
ただし、複雑な処理をラムダ式に書くと逆に読みにくくなるので、そういう場合はdefで関数を作ったほうが良いです。