Python map()関数とその使用例
⚡ スマートサマリー
Python map() は、リスト、タプル、セット、辞書、文字列などの反復可能なオブジェクトの各要素に指定された関数を適用します。返されるのは遅延評価される map オブジェクトなので、list() で変換したり、ループを使って反復処理したりできます。
構文
map(function, iterator1,iterator2 ...iteratorN)
技術パラメータ
重要なパラメータを2つ挙げます。
- 関数: map() に必ず渡す必要のある関数で、イテレータ内のすべての項目に適用されます。
- イテレータ: 必須の反復可能なオブジェクト。リスト、タプルなどを指定できます。map() 関数には複数の反復オブジェクトを渡すことができます。
戻り値
map() 関数は、イテレータ内のすべての項目に指定された関数を適用し、イテラブルなマップオブジェクト(タプル、リストなど)を返します。
map() 関数はどのように機能するのでしょうか?
map() 関数は、関数と反復可能なオブジェクトの 2 つの入力を受け取ります。map() に渡される関数は通常の関数であり、反復可能なオブジェクトに含まれるすべての値を反復処理します。
たとえば、数字のリストがあり、それぞれの数字の平方を求めるとします。
出力結果を得るには、与えられた数値の二乗を返す関数が必要です。その関数は以下のとおりです。
def square(n): return n*n
平方根を求めたい項目のリストは以下のとおりです。
my_list = [2,3,4,5,6,7,8,9]
それでは、組み込み関数 map() を使用して、my_list の各項目の二乗を求めてみましょう。
最終的なコードは次のとおりです。
def square(n): return n*n my_list = [2,3,4,5,6,7,8,9] updated_list = map(square, my_list) print(updated_list) print(list(updated_list))
出力:
<map object at 0x0000002C59601748>
[4, 9, 16, 25, 36, 49, 64, 81]
上記のように、map() 関数の出力は、画面に表示されるマップ オブジェクトです。 。
最終的な出力を得るには、map() 関数の出力を for ループまたは list() メソッドを使って反復処理する必要があります。コードでは、指定されたリスト内の値を表示するために list() を使用しています。
map() 関数を使うと、各数値の二乗を取得できます。map() に渡されたリストは [2,3,4,5,6,7,8,9] で、square() 関数を使うと、出力は [4, 9, 16, 25, 36, 49, 64, 81] になります。
map() 関数は、リスト内のすべての項目に square() 関数を適用します。例えば、my_list 変数を受け取り、各数値の二乗でリストを更新します。出力は updated_list 変数に格納されます。
map() の使用 Python 組み込み関数
その Python map()関数は組み込み関数であり、他の組み込み関数と一緒に使用することもできます。 Pythonこの例では、 Python round() は、指定された値を丸める組み込み関数です。
例:
私が持っているリストは my_list = [2.6743,3.63526,4.2325,5.9687967,6.3265,7.6988,8.232,9.6907] です。リスト内の各項目の丸められた値が必要なので、map() 関数の代わりに round() 関数を使用します。
my_list = [2.6743,3.63526,4.2325,5.9687967,6.3265,7.6988,8.232,9.6907] updated_list = map(round, my_list) print(updated_list) print(list(updated_list))
出力:
<map object at 0x000000E65F901748>
[3, 4, 4, 6, 6, 8, 8, 10]
round() 関数はリスト内のすべての項目に適用され、出力に示されているように、すべての値が丸められたリストを返します。
文字列をイテレータとして指定したmap()の使用
文字列に対してmap()を使うこともできます。 Python文字列は配列のように振る舞うので、map() 関数内で簡単に使用できます。
この例では、指定された文字列を大文字に変換する関数 myMapFunc() があります。myMapFunc() 関数は map() 関数に渡されます。map() 関数は、指定された文字列を myMapFunc() に渡すことで、大文字への変換処理を行います。
def myMapFunc(s): return s.upper() my_str = "welcome to guru99 tutorials!" updated_list = map(myMapFunc, my_str) print(updated_list) for i in updated_list: print(i, end="")
出力:
<map object at 0x000000DF2E711748>
WELCOME TO GURU99 TUTORIALS!
リストでmap()を使用する Numbers
map() 関数でリストを扱うには、数値のリストを受け取り、リスト内の各数値を 10 倍します。
今回使用するリストは [2,3,4,5,6,7,8,9] です。関数 myMapFunc() は、指定された数値を 10 倍する処理を行います。この関数は、リストとともに map() 関数に渡されます。
例:
def myMapFunc(n): return n*10 my_list = [2,3,4,5,6,7,8,9] updated_list = map(myMapFunc, my_list) print(updated_list) print(list(updated_list))
出力:
<map object at 0x000000EE2C061898>
[20, 30, 40, 50, 60, 70, 80, 90]
結果として、リスト内の各数値が10倍されます。
タプルでのmap()の使用
タプルは、 Python カンマで区切られ、丸括弧で囲まれた項目を持つ形式です。この例では、文字列値を含むタプルを使用します。使用する関数は、指定された値を大文字に変換します。
例:
def myMapFunc(n): return n.upper() my_tuple = ('php','java','python','c++','c') updated_list = map(myMapFunc, my_tuple) print(updated_list) print(list(updated_list))
出力:
<map object at 0x0000009C3C3A16A0> ['PHP', 'JAVA', 'PYTHON', 'C++', 'C']
出力は、すべての値が大文字に変換されたタプルです。
辞書でのmap()の使用
A 辞書の Python は中括弧 ({}) を使用して作成されます。辞書はイテレータなので、map() 関数内で使用できます。それでは、map() 関数内で辞書をイテレータとして使用してみましょう。
次の例は、map() 関数内での辞書イテレータの動作を示しています。
def myMapFunc(n): return n*10 my_dict = {2,3,4,5,6,7,8,9} finalitems = map(myMapFunc, my_dict) print(finalitems) print(list(finalitems))
出力:
<map object at 0x0000007EB451DEF0>
[20, 30, 40, 50, 60, 70, 80, 90]
Set での map() の使用
セット Python set() は、中括弧 ({}) で囲まれた順序付けされていない項目のコレクションです。set() もイテレータなので、map() 関数内で使用できます。
以下は、map() 関数内でセットをイテレータとして使用する動作例です。
def myMapFunc(n): return n*10 my_set = {2,3,4,5,6,7,8,9} finalitems = map(myMapFunc, my_set) print(finalitems) print(list(finalitems))
出力:
<map object at 0x000000AC8F05DEF0>
[20, 30, 40, 50, 60, 70, 80, 90]
Lambda関数でmap()を使用する
In Pythonラムダ式は匿名関数の構築に利用されます。通常の関数を定義するために def を使用するのと同じように、lambda キーワードを使用する必要があります。
この例では、map() 関数内でラムダ関数を使用します。ラムダ関数は、リスト内の各値を10倍します。
例:
my_list = [2,3,4,5,6,7,8,9] updated_list = map(lambda x: x * 10, my_list) print(updated_list) print(list(updated_list))
出力:
<map object at 0x000000BD18B11898>
[20, 30, 40, 50, 60, 70, 80, 90]
map() 関数内で複数のイテレータを使用する
例1:map()に2つのリストイテレータを渡す
map() 関数には、リストやタプルなど、複数のイテレータを同時に渡すことができます。
例えば、2つのリストを加算したい場合、map() 関数を使えば同じことができます。ここでは、my_list1 と my_list2 という2つのリストを使用します。
以下の例では、my_list1 の最初の項目が my_list2 の最初の項目に加算されます。関数 myMapFunc() は、my_list1 と my_list2 の項目を受け取り、両方の合計を返します。
以下は、map() 関数を使用して 2 つのリストを加算する動作例です。
def myMapFunc(list1, list2): return list1+list2 my_list1 = [2,3,4,5,6,7,8,9] my_list2 = [4,8,12,16,20,24,28] updated_list = map(myMapFunc, my_list1,my_list2) print(updated_list) print(list(updated_list))
出力:
<map object at 0x0000004D5F751860>
[6, 11, 16, 21, 26, 31, 36]
例2:1つのタプルとリストイテレータをmap()に渡す
map() 関数では、リストとタプルのイテレータを使用します。map() に渡される関数 myMapFunc() は、リストとタプルから要素を取得します。要素はアンダースコア (_) で結合されます。動作例を以下に示します。
def myMapFunc(list1, tuple1): return list1+"_"+tuple1 my_list = ['a','b', 'b', 'd', 'e'] my_tuple = ('PHP','Java','Python','C++','C') updated_list = map(myMapFunc, my_list,my_tuple) print(updated_list) print(list(updated_list))
出力:
<map object at 0x00000059F37BB4E0> ['a_PHP', 'b_Java', 'b_Python', 'd_C++', 'e_C']

