Python|map()でリストの全要素に関数を適用する

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()を使えば、リストの全要素に簡潔に関数を適用できる
  • lambdalist()と組み合わせるのが定番
  • 数値変換や複数リストの処理にも応用可能

実務では、CSVデータの変換フォーム入力のバリデーションなどで大活躍します。map()は初学者にとっては難しそうに感じるかもしれませんが、書き方のパターンを覚えると非常に強力なツールになります。

学習のコツは、「まずは短くシンプルなコードから試すこと」です。焦らずに試してみてくださいね!

タイトルとURLをコピーしました