python mapとは何か?map関数の使い方について解説

プログラマーとしてキャリアアップするためには、プログラミング言語を習得する必要があります。そして、近年注目を集めているプログラミング言語の一つに、Pythonがあります。

Pythonは記述がシンプルであるため、初心者でもマスターしやすいのが特徴です。
しかも、簡単な割にはアプリやAIの開発、データ分析など幅広い用途で利用できるという魅力があるのです。

Pythonには「map関数」と呼ばれるものが実装されています。
map関数を活用することで、プログラムの視認性が高まるといわれています。
もしPythonを本格的に導入しようと思っているのであれば、map関数をマスターしておくといいでしょう。

Pythonのmap関数とは

Pythonのmap関数について解説

出典:python

map関数とは、高階関数の一種です。
シーケンスといって、複数の要素を持ったオブジェクト関数を因数として受け取る機能のことです。シーケンスの各要素を受け取った関数に渡すことで、いろいろなことができるようになります。

filterを聞いたことはありませんか?
これも高階関数の一種です。

map関数の特徴:全要素にアクセス可能

map関数の特徴として、配列の全要素にアクセスできる点が挙げられます。
すべての要素に対して、関数を適応させることも可能です。
プログラミングを知っている人なら、「それはFor文を使っても一種では?」と思うかもしれません。
しかしFor文の場合、何度も同じ作業を繰り返し行わなければなりません。
map関数の場合は、繰り返し処理することなく、全要素にアクセスできます。

つまりループの必要がなくなるわけです。
その結果、ソースコードもシンプルなものになります。
直感的に情報の把握ができるのは大きな魅力といえるでしょう。

map関数のメリット:変換処理の必要なし

map関数の場合、変換処理のためのプログラムを作成する必要がないのもメリットの一つです。

たとえば、プログラミングが完成した後で、修正の必要が生じたとします。
その場合、通常だと変換処理のプログラムを書き込む必要があります。
しかし、間違っている要素だけを変換すればいいので、より少ない記述量で修正が可能です。

このように、Pythonのmap関数をマスターすることで、プログラミング作業の効率が着実に向上するのです。

Python基礎セミナー講習の詳細はこちら

Pythonのmap関数の使い方

Pythonのmap関数の使い方について解説

出典:note

Pythonのmap関数を使いこなせるようになれば、作業効率がかなりアップするのは間違いないでしょう。そこで、ここではmap関数の基本的な使い方について紹介するので、参考にしてください。

map関数の使い方1.基本的な書式はいくつかある

まず、map関数の基本的な書式ですが、Python3系とPython2系とでは若干異なるので注意しましょう。

Python3系の場合「list(map(関数,  イテラブル))」で表現します。
一方、Python2系の基本的な書式は「map(関数,  イテラブル)」で表現します。

記述の方法が異なるので、どちらの系統で作業するかで使い分けてください。

map関数の使い方2.引数の作り方

map関数の第1引数の場合、mapを適用したい関数を入力してください。

続いて、第2引数にはイテラブルオブジェクトを設定します。
イテラブルとは、Forやinの後に記載するオブジェクトのことを指します。
具体的には「list」や「range」といった関数のことです。

Python3系の基本書式として「list(map(関数,  イテラブル))」と記述すると紹介しました。
これによって第1引数で設定した関数に対して、第2引数のイテラブルオブジェクトの要素を適用できるようになります。

イテラブルオブジェクトはカンマを間に入れることで、複数設定することも可能です。

map関数の使い方3.具体的なコードについて紹介

では、具体的なコードで、map関数を用いることでどのようになるか見ていきましょう。
たとえば、以下のようなコードを設定したと仮定しましょう。

original_list = list(range(10)) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

mapped_list = map(lambda x: x**2, original_list)

print(list(mapped_list))

これは、最初のリストに記載されている0~9に対して二乗するようにコマンドしています。
このコードを実行すれば、当然のことながら、以下のような結果が表示されるはずです。

[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

このように、map関数を活用することで、関数処理を指定したリスト全体に対して実行してくれるわけです。いちいち関数処理の設定をする必要がないので、スピーディな処理も可能になるのです。

Python基礎セミナー講習の詳細はこちら

Pythonのmap関数のオブジェクトを紹介

Pythonのmap関数のオブジェクト

出典:qiita

Pythonのmap関数には、いろいろなオブジェクトがあります。
オブジェクトとその意味についてマスターすれば、さまざまな作業をシンプルに行えるようになります。

map関数のオブジェクト1.tuple

先ほど紹介したmap関数の「list」のところを、tupleに書き換える方法もあります。

tupleとは、複数のデータを組み合わせることで、構成されているデータを表現するためのオブジェクトです。複数の要素は、基本的にカンマで区切れば問題ありません。
しかし、カンマだけだと見づらくなる可能性があります。

そこで、tupleオブジェクトを使用する際には、全体をカッコで囲んで記述するスタイルが一般的です。カッコは必須ではありません。
しかし、カンマだけだと勘違いをするリスクがあるため、カッコをつけるのが暗黙のルールです。

重要なことなので覚えておきましょう。

map関数のオブジェクト2.dict

こちらは、for文で回した時にキーの取り出しが可能になるオブジェクトを指します。

たとえば、map関数の第2引数にdictを指定したと仮定しましょう。
すると、各キーを使って処理する形になります。

もし、キーと値の両方をピックアップしたければ、dictのitemメソッドを用いる形で処理します。
この時、第1引数に渡した関数には、先ほどのtupleが渡されるはずです。
キーを使用するのであればx[0]、値を使用するのであればx[1]と記述しなければなりません。

map関数のオブジェクト3.str

strとは、文字列のデータ型を意味するオブジェクトです。
また、組み込み関数としても活用できます。

strを用いることで、任意のデータを文字列に変換することが可能です。
strを記述してカッコの中に入っているデータが文字列として表示できます。

map関数のオブジェクト4.ジェネレータ式

ジェネレータ式とは、イテレータの一種です。
しかし、このイテレータに対してmapを使用するのはあまりお勧めできません。
冗長な記述になり、読みにくく感じるためです。
読みづらいので、勘違いなどの問題が起きる可能性も高くなります。

そこで、ジェネレータ式を使用する場合には、すべてジェネレータ式で記述したほうがコードも短くなりますし、シンプルでわかりやすくなるでしょう。

map関数のオブジェクト5.mapオブジェクト

こちらもイテレータの一種です。
よって、map関数の第2引数に設定が可能です。

mapオブジェクトを使用した場合、ジェネレータ式と同じで冗長な表現になるかもしれません。
しかし、ジェネレータ式と比較すると、見やすく感じるでしょう。

もし見やすくしたければ、チェーン的なコードで表現するといいでしょう。
そもそも、mapオブジェクトは、for文で回せるような処理をする際、各要素に関数を実行できるオブジェクトです。しかし、リスト内包表記を使うにあたって、チェーン的な記述をしてしまうと、for文が無駄に回ってしまう解釈になりかねません。
場合によっては、for文が2週回ってしまうような無駄な処理になってしまいます。
リスト内方表記をチェーン的に表記したければ、先ほど紹介したジェネレータ式にするといいでしょう。

map関数のオブジェクト6.fileオブジェクト

こちらも、イテレータの一種に当たるオブジェクトです。
open関数で生成されるイテレータで、for文で回した場合、文字列が1行ずつ取り出すことが可能です。

Pythonのmap関数の使い方 まとめ

Pythonをマスターするにあたって、map関数もしっかり学習しておきましょう。map関数をマスターすることで、イテラブルオブジェクトの全要素を指定された関数に適用させられます。
しかも、繰り返しの処理が必要な時に、シンプルなコードで表現できるので、コードの読み間違いのリスクを低減することが可能です。
誰でも読みやすいソースコードを作成できるので、Pythonを勉強する際には、map関数も忘れずに押さえておきましょう。

イテラブルオブジェクトを利用する際、複数渡すことになる場合には注意が必要です。
この場合、イテラブルオブジェクトの長さの最も短いものを適用して処理が完了します。
ポイントを押さえて、Pythonを使いこなせるようにスキルアップしていきましょう。

最新情報をチェックしよう!