【Python】map()関数とは?基本的な使い方を解説!
map()関数は、リスト等のすべての要素にアクセスして処理を行うことできる関数になります。
map関数では、関数とリストを引数として実行することで、新たなリストを作成したり、文字列を作成したりすることができます。
さらに、型名を指定することで要素の型を変更することもできます。
また、lambda式の無名関数と組み合わせると相性がとてよく、実践でとても役に立つので覚えていた方が良いでしょう。
今回はPythonのmap()関数の使い方について以下の内容について解説していきます。
⚫︎ map()関数とは
⚫︎ map()関数の基本的な使い方
⚫︎ map()関数でリスト等の要素全てに処理を行う場合
⚫︎ map()関数数値のリストを結合し、文字列にする場合
⚫︎ map()関数とlambda式と組み合わせて使用する場合
目次
map()関数とは
map()関数は、特定の反復可能オブジェクト(リスト、タプルなど)の各アイテムに特定の関数を適用した後、結果のマップオブジェクト(イテレータ)を返します。
map()関数の書き方
map()関数の構文は下記となります。
1 |
list(map(関数, オブジェクト)) |
パラメータ
map()関数のパラメータは下記となります。
⚫︎ 関数
mapが与えられたイテラブルの各要素を渡す関数です。
⚫︎ オブジェクト
マッピングされる反復可能オブジェクト(リストやタプルなど)です。
戻り値
指定されたイテラブル(リスト、タプルなど)の各アイテムに指定された関数を適用した後の結果のリストを返します。
map()関数の基本的な使い方
map()関数の基本的な使い方をサンプルコードを使って紹介していきます。
リスト等の要素の型を変換する
map関数の引数である関数に型を指定することで、リストなどの要素の型を変換することができます。
例
1 2 3 4 5 6 7 8 9 10 11 12 |
int_list = [3, 6, -3] str_list = list(map(str, int_list)) print(str_list) str_list = ["2", "-9", "123"] int_list = list(map(int, str_list)) print(int_list) int_list = [3, 6, -3] flt_list = list(map(float, int_list)) print(flt_list) |
出力結果
[‘3’, ‘6’, ‘-3’]
[2, -9, 123]
[3.0, 6.0, -3.0]
strによってstring型に、intによって整数型に、floatによって浮動小数点数型に変換されています。
任意の関数を定義する
任意の関数を定義するには引数の関数に関数名を指定します。
例1
1 2 3 4 |
str1 = 'アイウエオあいうえお' print(str1.translate(str.maketrans({'あ': 'A', 'ア': 'A', 'お': 'O', 'オ': 'O'}))) |
出力結果
AイウエOAいうえO
map()関数の引数に関数名を指定することで任意の関数が実行されています。
その為、「あ」と「ア」の要素は「A」に、「お」と「オ」の要素は「O」に変換されています。
リスト等を作成する
map()関数を使ってリスト等を作成することができます。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
list1 = list(range(1, 6)) def multi(x): y = x*2 return y list2 = map(multi, list1) list2_list = list(map(multi, list1)) print(list2_list) print(type(list2_list)) list3 = ("キリン", " ライオン", "ぞう", "とら") def list_mk(x): return x.lower() list4 = map(list_mk, list3) list4_tuple = tuple(map(list_mk, list3)) print(list4_tuple) print(type(list4_tuple)) |
出力結果
[2, 4, 6, 8, 10]
<class ‘list’>
(‘キリン’, ‘ ライオン’, ‘ぞう’, ‘とら’)
<class ‘tuple’>
map()関数を使ってリストとタプルを作成することができます。
その為、型を調べてみるとlistとtupleになっています。
リスト等の要素全てに処理を行う場合
リスト等の要素全てに処理を行うにはfor文を使用します。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 |
list1 = [1, 300, 240, 30, 40, 99, 100] def answer(num): if num < 100: return "100より小さいです。" elif num == 100: return "100です。" elif num > 100: return "100より大きいです。" for result in map(answer,list1): print(result) |
出力結果
100以下です。
100より大きいです。
100より大きいです。
100より小さいです。
100より小さいです。
100より小さいです。
100です
for文を使用することで、map()関数で返されたマップオブジェクトの要素にそれぞれ処理が行われています。
その為、リストの中の要素に対し、100より大きい場合、100より小さい場合、100の場合で条件分岐しています。
数値のリストを結合し、文字列にする場合
数値のリストを結合して文字列にする場合はjoin()メソッドを使用します。
例
1 2 3 4 5 6 |
list_int = [100, 200, 300, 24, 56, 234] list_str = ', '.join(map(str, list_int)) print(list_str) print(type(list_str)) |
出力結果
100, 200, 300, 24, 56, 234
join()メソッドによって数値のリストから文字列を作成することができました。
lambda式と組み合わせて使用する場合
map()関数は引数を複数指定することができる為、map関数とlambda式の組み合わせは非常に相性が良いです。
lambda式について詳しく知りたい場合は【Python】lambda(ラムダ)式の使い方を徹底解説!def(関数)とのコードを比較!をご参照ください。
例
1 2 3 4 5 6 7 8 9 |
animals = ['ライオン', 'パンダ', 'キリン', 'コアラ'] print(list(map(lambda animal:animal.lower(), animals))) num1 = [1,2,3,4] num2 = [13,45,67,89] result = map(lambda x, y: x * y, num1, num2) print(list(result)) |
出力結果
[‘ライオン’, ‘パンダ’, ‘キリン’, ‘コアラ’]
[13, 90, 201, 356]
今回のポイント
map()関数で反復可能オブジェクトをマップオブジェクトで返す
⚫︎ リストなどの要素の型を変換するにはmap()関数の引数である関数に型を指定する
⚫︎ 任意の関数を定義するにはmap()関数の引数である関数に関数名を指定する
⚫︎ map()関数はリストやタプルなどの複数の要素を管理するデータ型を作成することができる
⚫︎ リスト等の要素全てに処理を行うにはfor文を使用する
⚫︎ 数値のリストを結合して文字列にする場合はjoin()メソッドを使用する
⚫︎ map()関数はlambda式と組み合わせて使用しやすい
(引数を複数指定することができる為)
ST
株式会社flyhawkのSTです。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。