• Xでシェア
  • LINEでシェア
  • このエントリーをはてなブックマークに追加

Python mapの使い方

この記事のポイント

Pythonのmap関数は、リストや配列の要素に関数を一括適用できる強力な機能です。初心者の方でも理解しやすいよう、動物を使った親しみやすい例で解説していきます。

  • map関数の基本構文とリスト操作での効率的な一括処理方法を理解する
  • 実際のプログラミングで活用できる8つの実用的なコード例を知る
  • 初心者がつまずきやすいポイントと実務で使える応用テクニックを知る

これらのポイントを押さえることで、Pythonプログラミングの効率が格段に向上します。

目次

mapとは?

Pythonのmap関数は、リストやタプルなどの繰り返し可能なオブジェクトの全要素に、指定した関数をまとめて適用するための組み込み関数です。従来のforループを使った処理と比べて、コードが簡潔で読みやすい特徴があります。

map関数は元のデータを変更せず、新しいmapオブジェクトを返すので、安全にデータを変換できます。基本的な構文は「map(関数, 反復可能オブジェクト)」です。結果をリストで受け取りたい場合は、list関数で変換しましょう。この機能のおかげで、大量のデータ処理を効率よく処理できるため、データ分析やWebアプリケーション開発において幅広く活用されています。

【関連】
Pythonをもっと詳しく学ぶならpaizaラーニング

基本構文

map関数の基本構文は「map(関数, 反復可能オブジェクト)」です。第一引数には適用したい関数を、第二引数には処理する対象のリストやタプルを指定します。

map関数は、そのままでは使えないmapオブジェクトを返すため、結果をリストとして取得するにはlist関数で変換する必要があります。ここから出てくる例では、通常の関数による変換とlambda関数を使った簡潔な書き方の両方を確認できます。

# 基本的な関数を使用した例 def add_suffix(animal): return animal + "ちゃん" animals = ["イヌ", "ネコ", "ウサギ"] result = list(map(add_suffix, animals)) print(result)

出力結果

['イヌちゃん', 'ネコちゃん', 'ウサギちゃん']
# lambda関数を使用した例 numbers = [1, 2, 3, 4, 5] squared = list(map(lambda x: x ** 2, numbers)) print(squared)

出力結果

[1, 4, 9, 16, 25]

実用例

この実用例ではmap関数が実際の開発現場でどのように使われるかを、8つのサンプルコードで説明します。文字列を操作したり、数値を計算したり、データの型を変えたり、複数のリストを同時に処理する方法など、多様な活用法を紹介します。

それぞれの例では動物の名前を使っているので、処理の結果が直感的にわかりやすくなっています。また、各コード例の前には処理内容の説明があるので、初心者の方でも段階的に理解を深められるでしょう。これらの例を通じて、map関数がいかに柔軟で強力なツールであるかを体感してみてください。

文字列の大文字変換処理

これは動物の名前が入ったリストに含まれる文字列を、全て大文字に変換するための処理です。map関数を使うことで、str.upper関数という大文字化の処理をリスト内にまとめて適用しています。こうすることで、forループを使わなくても効率的に文字列を変換できます。このやり方はデータの整理や文字の形式を統一したい時によく使われます。

animals = ["lion", "tiger", "panda", "giraffe"] uppercase_animals = list(map(str.upper, animals)) print(uppercase_animals)

出力結果

['LION', 'TIGER', 'PANDA', 'GIRAFFE']

数値リストの計算処理

動物の年齢リストに対して、決まった計算をまとめて行う例です。lambda関数を使用して、各年齢に「人間年齢換算係数」を掛ける処理を実現しています。このようにリスト内の全ての数値に対して同じ計算を適用するやり方は、統計処理やデータ分析で頻繁に使われています。

dog_ages = [1, 2, 3, 4, 5] human_ages = list(map(lambda age: age * 7, dog_ages)) print(f"イヌの年齢: {dog_ages}") print(f"人間換算年齢: {human_ages}")

出力結果

イヌの年齢: [1, 2, 3, 4, 5]
人間換算年齢: [7, 14, 21, 28, 35]

文字列から整数への型変換

動物の個体数が入っている文字列リストを整数に変換するための処理です。map関数を使うことでint関数をリストの全ての文字列にまとめて適用し、一括で数値型に変換しています。CSVファイルを読み込んだ後のデータ処理などでよく使用される、実用的なパターンです。

animal_counts = ["12", "8", "15", "3", "20"] count_numbers = list(map(int, animal_counts)) total_animals = sum(count_numbers) print(f"各動物数: {count_numbers}") print(f"総数: {total_animals}匹")

出力結果

各動物数: [12, 8, 15, 3, 20]
総数: 58匹

複数リストの同時処理

動物の名前と鳴き声の2つのリストを同時に処理し、組み合わせた文字列を作成する例です。map関数は複数のリストを引数として受け取ることができ、zip関数と組み合わせると、リストの要素をペアとして並列に処理できます。

この手法は、バラバラのデータを関連付けて結合する際によく使われます。

animals = ["イヌ", "ネコ", "ウシ", "ブタ"] sounds = ["ワンワン", "ニャーニャー", "モーモー", "ブーブー"] animal_sounds = list(map(lambda a, s: f"{a}は{s}と鳴きます", animals, sounds)) for sound in animal_sounds: print(sound)

出力結果

イヌはワンワンと鳴きます
ネコはニャーニャーと鳴きます
ウシはモーモーと鳴きます
ブタはブーブーと鳴きます

条件付き文字列操作処理

この例は、動物の名前の文字数に応じて処理を変える方法です。lambda関数内で条件分岐(if)を使用し、文字数が長い動物名のみ略称を作成しています。このようなやり方は、文字列を一定のルールで整えたいときや表示形式を統一したいときに活用されます。

animals = ["ゾウ", "カバ", "サイ", "チーター", "フラミンゴ"] short_names = list(map(lambda name: name[:2] + "..." if len(name) > 3 else name, animals)) print("元の名前:", animals) print("短縮名前:", short_names)

出力結果

元の名前: ['ゾウ', 'カバ', 'サイ', 'チーター', 'フラミンゴ']
短縮名前: ['ゾウ', 'カバ', 'サイ', 'チー...', 'フラ...']

データの正規化処理

動物の体重データを正規化する処理の例を紹介します。浮動小数点数のリストに対して四捨五入の処理を行い、データの精度を統一します。

このように数値を丸める処理は、科学計算やデータ分析においてよく使われる重要な操作です。

import math weights = [12.7, 45.2, 8.9, 23.1, 67.8] rounded_weights = list(map(lambda w: round(w), weights)) print("元の体重:", weights) print("四捨五入後:", rounded_weights, "kg")

出力結果

元の体重: [12.7, 45.2, 8.9, 23.1, 67.8]
四捨五入後: [13, 45, 9, 23, 68] kg

辞書データの値抽出処理

動物の情報が入った辞書のリストから、特定のキーにある値だけを取り出す処理です。lambda関数を使って辞書の中にある特定のキーにアクセスし、必要な情報だけを取り出します。

JSON データやAPI レスポンスの処理でよく使用される、実践的な例です。

animals_data = [ {"name": "ライオン", "age": 5}, {"name": "ゾウ", "age": 15}, {"name": "サル", "age": 8} ] names = list(map(lambda animal: animal["name"], animals_data)) print("動物名一覧:", names)

出力結果

動物名一覧: ['ライオン', 'ゾウ', 'サル']

ネストしたリスト構造の処理

これは、動物園の各エリアにいる動物の数をカウントする処理です。入れ子になったリスト構造(ネストしたリスト)に対してlen関数を適用し、それぞれのリストの要素数を取得します。

この方法は、多次元のデータの集計処理や統計情報を出す際によく使用される、応用的なパターンです。

zoo_areas = [ ["ライオン", "トラ", "ヒョウ"], ["ゾウ", "キリン"], ["サル", "チンパンジー", "オランウータン", "ゴリラ"] ] area_counts = list(map(len, zoo_areas)) print("各エリアの動物数:", area_counts) print("総動物数:", sum(area_counts))

出力結果

各エリアの動物数: [3, 2, 4]
総動物数: 9

まとめ

Pythonのmap関数は、リストやタプルといった繰り返し可能なオブジェクトに対して、ある関数をまとめて実行できる強力なツールです。forループと比べてコードが簡潔になるため、関数型プログラミングの考え方を取り入れることで、読みやすく、メンテナンスしやすいプログラムを作成できます。

Python mapの活躍する場面

  • データクレンジングや前処理などで、すべての要素に同じ変換処理をまとめて行いたいとき
  • Web API から受け取ったデータ(レスポンスデータ)から必要な情報だけを抽出したいとき
  • 科学的な計算や統計を行う際に、数値データを特定の範囲に収まるように変換したい(正規化)とき

重要なポイント

  • map関数は元データを変えることなく、新しいオブジェクトを返すので、安全にデータ処理ができる
  • lambda関数と組み合わせによることで、処理内容を柔軟に、シンプルに記述できる
  • 複数のリストを同時に処理したり、条件分岐によって処理を変えたりと高度なデータ操作にも対応できる

本記事で紹介した8つの実用例からも分かるように、文字列の処理や数値計算、データ変換など様々な場面で活用できます。初心者の方はまず基本的な書き方から学び、徐々に複雑な処理に挑戦することで、Pythonのプログラミングスキルを向上させられるでしょう。

レベルを更に上げたい方はpaizaプログラミングスキルチェックへ

  1. paizaラーニングトップ
  2. リファレンス
  3. Pythonのリファレンス記事一覧
  4. Python mapの使い方