例を使用した Python map() 関数
Python map() は、入力として与えられた反復子のすべての項目に関数を適用します。たとえば、反復子は、リスト、タプル、セット、辞書、文字列にすることができ、反復可能なマップ オブジェクトを返します。 Python map() は組み込み関数です。
このチュートリアルでは、次のことを学びます:
- 構文:
- map() 関数はどのように機能しますか?
- Python 組み込み関数で map() を使用する
- 文字列を反復子として map() を使用する
- 数値のリストで map() を使用する
- タプルで map() を使用する
- 辞書での map() の使用
- Set で map() を使用する
- Lambda 関数で map() を使用する
- map() 関数内で複数の反復子を使用する
構文:
map(function, iterator1,iterator2 ...iteratorN)
パラメータ
ここに 2 つの重要な点があります
- 関数: イテレータで使用可能なすべてのアイテムに適用されるマップに指定する必須関数。
- iterator:反復可能な強制オブジェクト。リスト、タプルなどを指定できます。複数の iterator オブジェクトを map() 関数に渡すことができます。
戻り値
map() 関数は、指定された関数を反復子内のすべてのアイテムに適用し、反復可能なマップ オブジェクト、つまりタプル、リストなどを返します。
map() 関数のしくみ
map() 関数は、関数と反復可能なオブジェクトとして 2 つの入力を受け取ります。 map() に指定された関数は通常の関数であり、指定された反復可能なオブジェクトに存在するすべての値を反復処理します。
たとえば、数字のリストがあり、それぞれの数字の 2 乗を求めたいとします。
出力を取得するには、指定された数値の二乗を返す関数が必要です。関数は次のようになります:
def square(n): return n*n
正方形を見つけたい項目のリストは次のとおりです:
my_list = [2,3,4,5,6,7,8,9]
次に、python 組み込み関数 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() 関数の出力は、
最終的な出力を取得するには、for ループまたは list() メソッドを使用して、マップからの出力を反復処理する必要があります。指定されたリスト内の値を表示するコードで list() を使用しました。
したがって、map() 関数を使用して、各数値の二乗を取得できます。map に指定されたリストは [2,3,4,5,6,7,8,9] で、関数 square() を使用して出力map() から取得したのは [4, 9, 16, 25, 36, 49, 64, 81] .
関数 map() は、関数 square() をリストのすべての項目に適用します。たとえば、my_list 変数は、各数値の 2 乗でリストを更新します。 out は updated_list 変数に格納されます。
Python 組み込み関数で map() を使用する
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() 関数に渡されます。マップ関数は、文字列を 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() を使用する
map() でリストを操作するには、数値のリストを取得し、リスト内の各数値に 10 を掛けます。
使用するリストは [2,3,4,5,6,7,8,9] です。関数 myMapFunc () は、指定された数値に 10 を掛けます。この関数は、リストと共にマップするために指定されます。
例:
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() を使用する
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() はイテレータでもあるため、 map() 関数内で使用できます。
set を 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() を使用する
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:2 つのリスト反復子を map() に渡す
複数のイテレータ、つまりリスト、タプルなどをすべて同時に 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']
まとめ
- Python map() は、入力として与えられた反復子のすべての項目に関数を適用する組み込み関数です。たとえば、反復子は、リスト、タプル、文字列などにすることができ、反復可能なマップ オブジェクトを返します。
- map() 関数は、指定された関数を反復子内のすべての項目に適用し、反復可能なマップ オブジェクト、つまりタプル、リストなどを返します。
- Python の map() 関数は組み込み関数であり、Python で利用可能な他の組み込み関数と共に使用することもできます。
- タプルは、項目がコンマで区切られ、丸括弧で囲まれた Python のオブジェクトです。この例では、文字列値を持つタプルを取ります。使用する関数は、指定された値を大文字に変換します。
- Python の辞書は、中かっこ ({}) を使用して作成されます。辞書は反復子であるため、map() 関数内で使用できます。
- Python のセットは、中かっこ (()) で囲まれた項目の順序付けられていないコレクションです。 set() は反復子でもあるため、map() 関数内で使用できます。
- Python では、ラムダ式 (またはラムダ形式) を使用して無名関数を作成します。したがって、map() 内で lambda を使用する場合は、lambda キーワードを使用する必要があります。
- リストやタプルなど、複数の反復子を map() 関数に送信できます。
Python