2024.05.01
【Python】map関数とは?特徴や使い方を解説
Pythonに組み込まれたmap関数は、設定した関数をリストなどの要素に適用し、新しいイテレータ(反復子)を生成します。主に、反復処理の視認性を高め、簡潔に記述するために使います。あらかじめ組み込まれているため、あらためてインポートしないで使用できることも便利な部分です。
基礎的な使い方や記述をマスターすれば、簡単な処理をこなせるようになり、実務でもスキルアップにもつながります。そこで、Pythonのmap関数について、基礎とベーシックな記述例を紹介します。Pythonが初心者の方や、より理解を深めたい方は、ぜひ最後までご覧ください。
目次
Python map関数とは
Pythonのmap関数とは、Pythonにあらかじめ実装されている関数のひとつで、リストやタプルなどに特定の関数を適用できるものです。
配列のすべての要素にアクセスでき、繰り返し処理しなくて済むことが主な特徴です。For文だと、同じ処理を繰り返さなければなりません。しかし、そういった手間を省き、シンプルな記述かつパッと見て情報を把握しやすいことが魅力です。
map関数を使いこなすことで、簡単な処理でもすばやく結果を得ることができます。そのため、Pythonのプログラミングは、map関数の使い方をマスターすることが重要です。
Python map関数の基礎
はじめに、Pythonのmap関数のベーシックな書式と引数の関係にフォーカスして解説します。ほかのプログラミング言語でも組み込まれるケースがありますが、誰でも扱いやすい記述を目指すには重要です。まずは、基礎をしっかり押さえることをおすすめします。
書式
Pythonでは、2系か3系かで少し書式が異なるため注意が必要です。作業する際は、混同しないようはじめにどちらを使用して作業するかを決めることをおすすめします。
Python3系 | list(map(関数, イテラブル)) |
Python2系 | map(関数, イテラブル) |
引数
引数(ひきすう)は簡単に言うと、関数に渡す値を指します。主に、関数に引数を渡すと、関数が引数を受け取り、引数ごとの結果を出すといった流れが成立します。以下の参考コードは、3系の書き方に統一します。
list(map(第1引数, 第2引数)) |
第1引数には、適用させたい関数を記述し、第2引数にはイテラブルオブジェクトを記述します。イテラブルとは、Forやinのあとに記述するオブジェクトで、listやrangeなどが代表的です。処理の内容によっては2乗や3乗などのほかにもさまざまな処理に対応します。
list(map(関数, イテラブル1, イテラブル2)) |
また、イテラブルは、上記のように間をカンマで区切るとで2つ以上の設定も可能です。
Python map関数の使い方
基礎を理解したうえで、使い方と記述例をサンプルコードを交えて見ていきます。現在勉強中の方やビギナーの方は、実際にサンプルコードを書いてみることをおすすめします。
基本的な使い方
まず、これまでお伝えしたように、第1引数に関数、第2引数でイテラブルを記述します。はじめにイテラブル「sample1_list」にはrange(5)の実行により「0,1,2,3,4」の値が入っていることを記述してください。次に2行目で関数「multi」で値を2倍にすると示し、 map関数を呼び出して、multiにsample1_listを渡します。
sample1_list = list(range(5)) def multi(x): y = x*2 return y sample2_list = map(multi, sample1_list) print(list(sample2_list)) |
このコードを実行すると、結果は「0,2, 4, 6, 8」になります。
イテラブルが2つ以上ある場合は、次のようなコードを記述します。def文で 2つの引数を取る関数を定義して実行します。
sample1_list = [1, 2, 3] sample2_list = [4, 5, 6] def myfunc(i, j): return (i, j) print(list(map(myfunc, sample1_list, sample2_list))) |
sample1_listとsample2_listの要素をそれぞれひとつずつ持つ「(1, 4), (2, 5), (3, 6)」のリストが返っていることがわかります。ただし、イテラブルの長さが異なる場合は、最も短いものに合わせた処理になるため注意しなければなりません。
def文との組み合わせ
def文と組み合わせる際は、任意の関数をdef文をつかって記述します。このサンプルは、はじめに値を2乗する関数の square を定義し、第1引数にsquareを、第2引数にlistを渡します。結果を見ると「121, 0.09, 25, 9, 1」と2乗になっていることがわかります。
def square(num) : return num*num list_test = [11, 0.3, -5, 3, -1] list_test_m = map(square, list_test) print(list(list_test_m)) [121, 0.09, 25, 9, 1] |
lambdaとの組み合わせ
名前を定義しないで使用できるのが魅力のlambdaは無名関数ともいい、関数作成方法のひとつです。短い処理をしたいときに適しています。def文は機能を確かめるために定義位置を見なければなりませんが、lambdaは関数をそのまま記述できるので、読みやすさもアップするのがメリットです。
list_test = [11, 0.3, -5, 3, -1] func = lambda num : num*num list_test_m = map(func, list_test) print(list(list_test_m)) [121, 0.09, 25, 9, 1] |
また、lambdaで定義した関数は、引数に設定できます。実際に記述してみると、コードそのものがより短くなり、読み間違いの予防にも適しています。
list_test = [11, 0.3, -5, 3, -1] list_test_m = map(lambda num : num*num, list_test) print(list(list_test_m)) [121, 0.09, 25, 9, 1] |
複数のイテラブルを指定
2つ以上のイテラブルを指定する際は、単一の関数(例えばlambda)を使用し、それぞれのイテラブルから要素を取り出してこの関数に適用します。イテラブルとlambdaの数が合わないとエラーになるため、事前にしっかり確認しておくことが重要です。
いくつもの処理をするには、それだけ正確な記述が重要になるといえます。エラーのない記述とスキルアップのためにも、しっかりチェックすることをおすすめします。
こちらの記事では、Python辞書の基本的な使い方について解説しています。リストやタプル、集合との違いも取り上げているため、ぜひあわせてご覧ください。
まとめ
今回は、Pythonに実装されているmap関数の概要と基礎的な使い方を紹介しました。map関数は、ほかの言語でも見る機会がありますが、Pythonのmap関数は、配列のすべての要素にアクセスする点、繰り返し処理しなくても良い点が最大の魅力です。
def文やlambdaとの組み合わせにより、より簡潔かつ読み間違いを予防できるなど、利便性も向上します。map関数を習得し使いこなせるようになると、全体の可読性が高まり読みやすい記述を実現します。
Pythonのmap関数は、初心者やプログラミングを学んでいる方にとって非常に便利な機能です。プログラムを効率的に記述するスキルを身につけるために、Pythonのmap関数を上手に使うことをおすすめします。
投稿者
-
システム開発、Webサイト制作、ECサイトの構築・運用、デジタルトランスフォーメーション(DX)など、デジタルビジネスに関わる多岐の領域において、最新のトレンド情報や実践的なノウハウを発信してまいります。
新着情報
同じカテゴリの記事
新着記事
人気の記事