1. はじめに
Pythonを使っていて「リストのすべての要素に処理をかけたい」と思ったことはありませんか?そんなときに活躍するのが、map()
関数です。
この記事では、Python|map()でリストの全要素に関数を適用する方法を、初心者にもわかりやすく丁寧に解説します。具体的なコード例や、よくあるエラーの対策までしっかり紹介しますので、ぜひ最後までご覧ください。
map()
を活用できるようになると、処理の自動化やコードの簡潔化が進み、実務や競技プログラミングでも大いに役立ちます。
2. map()関数の基本と使い方
2-1. map()関数とは?
map()
関数は、「関数」と「イテラブル(リストやタプルなど)」を引数に取り、各要素に指定した関数を適用します。処理結果はmap
オブジェクトとして返されるため、通常はlist()
で変換して使います。
2-2. 基本的な使い方
# すべての要素を2倍にする
numbers = [1, 2, 3, 4, 5]
# map関数で2倍にする
doubled = map(lambda x: x * 2, numbers)
# 結果をリスト化
result = list(doubled)
print(result)
実行結果:
[2, 4, 6, 8, 10]
lambda
を使うことで、関数をわざわざ定義せずにその場で処理を記述できます。Pythonらしい書き方ですね。
3. よくある使い方・応用例
3-1. 関数を別に定義するスタイル
def square(x):
return x ** 2
numbers = [1, 2, 3, 4, 5]
squared = list(map(square, numbers))
print(squared)
実行結果:
[1, 4, 9, 16, 25]
自作の関数を使えば、より複雑な処理も簡単に適用できます。
3-2. 文字列のリストを数値に変換
フォームやCSVなどから取得したデータは文字列であることが多いです。以下のようにmap()
を使えば一括変換が可能です。
str_numbers = ["10", "20", "30"]
int_numbers = list(map(int, str_numbers))
print(int_numbers)
実行結果:
[10, 20, 30]
3-3. 複数のリストに関数を適用(引数が2つ)
map()
は、複数のリストを同時に処理することもできます。以下は要素ごとの足し算の例です。
list1 = [1, 2, 3]
list2 = [4, 5, 6]
added = list(map(lambda x, y: x + y, list1, list2))
print(added)
実行結果:
[5, 7, 9]
4. map()の注意点とよくあるエラー
4-1. mapオブジェクトのままだと出力されない
map()
の返り値はmap
オブジェクトなので、print(map(...))
だけでは中身は見えません。
result = map(str.upper, ["apple", "banana"])
print(result) # これは mapオブジェクトの表示になる
実行結果:
<map object at 0x7f8d4d7bafd0>
list(result)
で中身を表示するようにしましょう。
4-2. 引数の数と関数の引数が一致しない
lambda x, y: x + y
のように引数が複数ある関数を使う場合、複数のリストをmap()
に渡す必要があります。一方しか渡さないとエラーになります。
4-3. 処理を繰り返し利用できない
map
オブジェクトはイテレータのため、一度list()
で取り出すと、それ以降は再利用できません。
5. まとめ
map()
を使えば、リストの全要素に簡潔に関数を適用できるlambda
やlist()
と組み合わせるのが定番- 数値変換や複数リストの処理にも応用可能
実務では、CSVデータの変換やフォーム入力のバリデーションなどで大活躍します。map()
は初学者にとっては難しそうに感じるかもしれませんが、書き方のパターンを覚えると非常に強力なツールになります。
学習のコツは、「まずは短くシンプルなコードから試すこと」です。焦らずに試してみてくださいね!