Pythonの map
関数とは?使い方と活用事例をやさしく解説 🐍✨
Pythonを使っているとよく登場する組み込み関数のひとつに map()
があります。シンプルなのにとても強力なこの関数、うまく使えばコードをすっきり書けたり、処理を効率化できたりします!
この記事では、map
関数の基本から応用、活用例までを丁寧に紹介します 💡
🔧 map
関数の基本構文
map(function, iterable)
-
function
:各要素に適用する関数(例:int
、str
、lambda
関数など) -
iterable
:繰り返し処理ができるオブジェクト(例:リスト、タプル、文字列など)
map
関数は、指定した関数をイテラブルの各要素に順番に適用して、その結果をイテレータとして返します。
🧪 基本例:文字列を整数に変換する
numbers = ["1", "2", "3"]
int_numbers = map(int, numbers)
print(list(int_numbers)) # 出力: [1, 2, 3]
この例では、int
関数をリストの各要素に適用し、文字列を整数に変換しています。
🔍 ポイントmap
は「for 文 + append」を使った処理を一行で簡潔に書ける便利なツールです。
📝 コード解説:b, c = map(int, b_c_text.split())
たとえば、次のようなコードがあったとします。
b_c_text = "10 20"
b, c = map(int, b_c_text.split())
-
b_c_text.split()
:空白で文字列を分割 →["10", "20"]
-
map(int, ...)
:各要素にint
を適用 →[10, 20]
-
b, c = ...
:それぞれの値をb
とc
に代入
このように、ユーザーの入力を一瞬で処理できるのが map
の魅力です!
🎮 応用例①:複数の値を一括で取得
# 入力例: "5 10 15"
a, b, c = map(int, input("Enter three numbers: ").split())
print(a, b, c)
このコードでは、3つの整数をスペース区切りで一度に入力し、すぐに整数として使える形に変換しています。
✅ 活用シーン
競技プログラミングやAtCoderなどの問題で、標準入力から複数の数値を読み取るときによく使われます。
🧠 応用例②:無名関数(lambda
)との組み合わせ
map
は lambda
関数と組み合わせると、柔軟な処理が可能になります。
# 各要素を2倍にする
nums = [1, 2, 3, 4]
doubled = map(lambda x: x * 2, nums)
print(list(doubled)) # [2, 4, 6, 8]
このように、ちょっとした処理を1行で書けるのが便利です!
💡 活用事例:複数のリストを同時に処理
Pythonには zip()
関数と map()
を組み合わせる方法もあります。
list1 = [1, 2, 3]
list2 = [4, 5, 6]
sums = map(lambda x: x[0] + x[1], zip(list1, list2))
print(list(sums)) # [5, 7, 9]
zip()
によってリストをペアにし、それぞれの要素を足し合わせる処理を map
で実現しています。
📌 補足
この処理は for
文でも書けますが、map
+ lambda
を使うとコードが短く読みやすくなります。
🚨 注意点:map
の返り値はイテレータ!
result = map(int, ["1", "2", "3"])
print(result) # <map object at 0x...>
map
の結果はリストではなく イテレータ です。そのままでは中身が見えないので、リストやタプルに変換して使うのが一般的です。
print(list(result)) # [1, 2, 3]
一度 list()
に変換すると、要素はすべて「消費」されてしまう点にも注意!
🎯 まとめ
-
map
関数は、イテラブルの各要素に関数を適用するための便利なツール。 -
入力処理やデータ変換を簡潔に書ける。
-
lambda
やzip
と組み合わせることで、より柔軟な使い方が可能。 -
結果はイテレータなので、リストに変換して使おう!
🧩 おすすめの練習問題
map
を使った入力処理やデータ変換は、初心者の壁を越えるポイントのひとつです。以下のような問題で実際に手を動かしてみましょう!
-
リスト内のすべての文字列を大文字に変換
-
数字のリストから、奇数だけ2倍にして表示
-
入力された複数の小数を四捨五入して整数に変換