Python
 Computer >> コンピューター >  >> プログラミング >> Python

【初心者向け】Pythonのmap()関数をステップバイステップで徹底解説

Pythonのmap()関数は、リストやセットなどのコレクション内の各要素に対して、指定した関数を実行するための組み込み関数です。map()関数は、「適用する関数」と「その関数を適用する対象となるオブジェクト(イテラブル)」の2つの引数を受け取ります。


Pythonでリストを扱っていると、リスト内のすべての要素に対して同じ処理を行いたい場面に遭遇することがあります。

そんなときに役立つのが、Pythonの組み込み関数であるmap()です。map()関数は、リストなどのイテラブルオブジェクト内のすべての要素に関数を適用し、mapオブジェクトを返します。

このチュートリアルでは、具体的なコード例を交えながら、Pythonにおけるmap()関数の使い方を詳しく解説していきます。

Pythonのイテラブルオブジェクトとは

イテラブルオブジェクトとは、数えられる数の値を含み、順番に走査(トラバース)できるオブジェクトのことです。リスト、辞書、タプル、セットは、複数の値を格納でき、要素を順に取り出せるため、いずれもPythonにおけるイテラブルオブジェクトに該当します。

例えば、生徒の名前のリストを保存したいとしましょう。名前ごとに個別の変数を用意する代わりに、リストを宣言して値をまとめて格納できます。

students = ["Lucy", "Bill", "Graham", "Tommy", "Leslie"]

変数studentsにはリストが代入されています。リストはイテラブルオブジェクトなので、含まれる要素を順番に処理することが可能です。

Python map()関数の構文

map()関数は、リスト内の各要素を順番に渡し、それぞれに対して関数を実行します。map()はPythonに組み込まれているため、ライブラリをインポートすることなくすぐに利用できます。

Pythonのmap()は高階関数の一種で、イテラブルオブジェクト内の複数の要素に対して特定の関数を適用するために使われます。map()関数の構文は以下の通りです。

map(function, iterable)

map()関数の第1引数はfunction(関数)です。これは、イテラブル内の各要素に対して実行される関数を指します。第2引数のiterable(イテラブル)は、マッピングの対象となるオブジェクトで、リスト、タプル、辞書、セットなどが該当します。

Pythonでのmap()関数の使い方

ここでは、学校の管理者として全校生徒の名簿を作成する任務を任された場面を想定してみましょう。

生徒の名前の横に学年を表示したリストを出力することにします。これにより、異なる学年に同名の生徒がいても混乱を防ぐことができます。

これはmap()関数の完璧な活用例です。「関数を適用したいイテラブル」があり、その関数は「生徒の名前と学年を結合するもの」だからです。以下は、生徒の名前と学年を結合するプログラムの例です。

def mergeNamesAndGrades(name):
	return name + " First Grade"

students = ["Lucy", "Bill", "Graham", "Tommy", "Leslie"]
student_roster = map(mergeNamesAndGrades, students)

最初の2行では、mergeNamesAndGradesというPython関数を定義しています。この関数は、各生徒の名前に「First Grade」を結合します。

次の行では、学校の生徒のリストを定義しています。リストには5人の生徒が含まれています。

map()関数は、その結果を変数student_rosterに格納する形で適用されています。map()関数は2つの引数を受け取ります。1つ目は関数(この場合はmergeNamesAndGrades)、2つ目はイテラブルオブジェクト(students)です。

これにより、map()メソッドによって、リスト内の各生徒に対してmergeNamesAndGrades()関数が適用されます。

mapオブジェクトをリストに変換する方法

しかし、このままではプログラムは完成していません。map()関数は完全なリストではなく、mapオブジェクトを返すからです。現時点でstudent_roster変数を出力すると、次のようなmapオブジェクトが返されます。

<map object at 0x7f2c74103890>

このような出力が得られるのは、map()関数がリストではなく独自のカスタムオブジェクトを返すためです。したがって、生徒名のリストを出力したい場合は、student_roster変数をリストに変換する必要があります。そのためのコードは以下の通りです。

print(list(student_roster))

このコードを実行すると、次のPythonリストが出力されます。

['Lucy First Grade', 'Bill First Grade', 'Graham First Grade', 'Tommy First Grade', 'Leslie First Grade']

もう一つ例を見てみましょう。今度は、名簿に載っているすべての生徒の名前と学年を大文字に変換したいとします。以下のコードで、生徒名と学年の大文字・小文字を変更できます。

def changeCase(name):
	return name.upper()

student_roster = ['Lucy First Grade', 'Bill First Grade', 'Graham First Grade', 'Tommy First Grade', 'Leslie First Grade']
final_student_roster = map(changeCase, student_roster)
print(list(final_student_roster))

このコードは、反復処理可能なリストを返します。

['LUCY FIRST GRADE', 'BILL FIRST GRADE', 'GRAHAM FIRST GRADE', 'TOMMY FIRST GRADE', 'LESLIE FIRST GRADE']

この例では、changeCaseという関数を定義しました。この関数は、各生徒名を大文字に変換します。名前の大文字・小文字の変換には、Pythonのupper()関数を使用しています。

プログラムでは、map()関数を使って、イテラブルなstudent_roster内の各要素に対してchangeCase()を呼び出しています。最終的に、プログラムは大文字に変換された生徒名のリストを返します。

map()関数とlambda(ラムダ式)の組み合わせ

Pythonのmap()関数は、lambda(ラムダ式)と組み合わせることで、コードをより効率的にできます。先ほどの例では、イテラブルを特定の方法で変換するために、新しい関数を定義しました。

しかし、イテラブルオブジェクトに対して一度だけ処理を行いたい場合は、わざわざ新しい関数を定義する必要はありません。代わりに、小さな無名関数であるlambda関数を使用できます。

lambda関数は、新しい関数を定義したくないような小さな処理において、map()と組み合わせて使うのに適しています。

lambda関数は通常の関数よりも簡潔に書けるため、できる限り活用しましょう。簡単な処理にlambda関数を使うことで、コードの可読性も向上します。

以下は、先ほどと同様に、生徒名のリストを大文字に変換するためにlambdaを使った例です。

student_roster = ['Lucy First Grade', 'Bill First Grade', 'Graham First Grade', 'Tommy First Grade', 'Leslie First Grade']
final_student_roster = map(lambda s: s.upper(), student_roster)
print(list(final_student_roster))

今回は、生徒名を大文字に変換するための新しい関数を定義していません。代わりに、lambda s: s.upper()という小さな無名関数を使用し、生徒名の大文字・小文字を変換しています。

このコードの出力は以下の通りです。

['LUCY FIRST GRADE', 'BILL FIRST GRADE', 'GRAHAM FIRST GRADE', 'TOMMY FIRST GRADE', 'LESLIE FIRST GRADE']

まとめ

Pythonのmap()関数を使うと、イテラブルオブジェクト内のすべての要素に対して特定の関数を適用できます。例えば、文字列のリストを大文字に変換したり、数値のリストに一定の倍率を掛けたりすることも可能です。

このチュートリアルでは、Pythonのmap()を使ってイテラブル内の全要素に関数を適用する方法を解説しました。さらに、lambda関数をmap()と組み合わせて、より効率的で読みやすいコードを書く方法についても紹介しました。

これで、あなたもmap()関数をプロのように使いこなすための基礎知識を身につけました。ぜひ実際のコードで試してみてください。

  1. Pythonインタープリターとは?仕組みと初心者向けオンライン環境を徹底解説

    Pythonは学びやすいプログラミング言語として知られています。その理由のひとつが、自分のマシンに正しいバージョンのPythonをインストールしなくても、オンラインで利用できるPythonインタープリターが数多く存在する点です。本記事では、Pythonインタープリターの仕組みについて解説し、初心者にも使いやすい人気のオンラインインタープリターをご紹介します。 Pythonプログラムはどのように実行されるのか? PythonはJavaと同様に、純粋なインタプリタ言語ともコンパイラ言語とも分類できず、両方の性質を併せ持っています。 ここでいう「コンパイル」とは、特定のプラットフォームに依存し

  2. Pythonで絶対値を取得する方法:abs()関数の使い方をわかりやすく解説

    Pythonのabs()メソッドは、数値の絶対値を返す組み込み関数です。絶対値とは、その数値が数直線上の0からどれだけ離れているかを表す値であり、負の数は正の数に変換され、正の数はそのままの値が返されます。たとえば、abs(-9)は9を、abs(2)は2を返します。 絶対値は数学的な計算のさまざまな場面で活用されます。特に、距離の計算などでは欠かせない概念です。本記事では、Pythonのabs()メソッドの基本的な使い方から、実践的なコード例までを詳しく解説していきます。 絶対値とは何か 数学において、絶対値とは「ある数が数直線上の0からどれだけ離れているか」を表す値です。元の数が正でも