Python map()関数とその使用例

⚡ スマートサマリー

Python map() は、リスト、タプル、セット、辞書、文字列などの反復可能なオブジェクトの各要素に指定された関数を適用します。返されるのは遅延評価される map オブジェクトなので、list() で変換したり、ループを使って反復処理したりできます。

  • 🔢 構文: map() 関数は、関数と 1 つ以上の反復可能なオブジェクトを受け取り、その関数を各要素に適用します。
  • 🔁 戻り値: map() は遅延評価されるマップオブジェクトを返すため、結果を表示するには、list()、tuple()、または set() でラップする必要があります。
  • 🧩 イテラブル: map() 関数への入力としては、リスト、タプル、セット、辞書、文字列のいずれも使用できます。
  • ラムダ: map() とラムダ式を組み合わせることで、単純な変換のために別の名前付き関数を定義する必要がなくなります。
  • 複数の反復可能オブジェクト: 複数のイテラブルを渡すと、関数がそれらに並列に適用されます。ping 最短で。
  • 🤖 AI支援: GitHub CopilotなどのAIアシスタントはmap()呼び出しを生成し、マップ形式の変換によって機械学習のデータパイプラインにデータが供給されます。

Python map() 関数

構文

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']

よくあるご質問

どちらも各項目に対して操作を適用します。リスト内包表記は多くの場合、可読性が高く、リストを直接返しますが、map() は遅延評価されるマップオブジェクトを返し、既存の名前付き関数を再利用する場合に高速になることがあります。

いいえ。map() は元のイテラブルを一切変更しません。各要素を読み込み、関数を適用して、新しい遅延マップオブジェクトを生成します。元のリスト、タプル、または文字列はそのまま残ります。

In Python 3. map() は遅延評価です。つまり、反復処理されたときにのみ値を計算するマップオブジェクトを返します。これにより、大きなデータの場合にメモリを節約できます。結果を取得するには、list() でラップするか、ループ処理を使用してください。

map() はすべての項目を変換し、filter() はテストに合格した項目のみを残し、reduce() (functools から) はすべての項目を単一の値に結合します。これらを組み合わせることで、変換、選択、および集計操作を網羅できます。

イテラブルの長さが異なる場合、map() は最短のイテラブルで停止します。長いイテラブルに含まれる余分な要素は無視されるため、エラーは発生せず、結果は最短のイテラブルと一致します。

いいえ。マップオブジェクトはイテレータであり、一度ループすると要素が尽きます。ループ処理やlist()メソッドの呼び出しを行うと、マップは空になります。再利用する必要がある場合は、まずリストに変換してください。

機械学習において、`map()` 関数は、数値のスケーリング、テキストのトークン化、トレーニング前の特徴量の変換など、データセット全体にわたって前処理関数を適用します。これにより、多数のサンプルに対して同じ操作を簡潔かつ効率的に実行できます。

はい。GitHub Copilotはmap()関数の呼び出しを適切な関数とイテラブルで自動補完し、エージェント型AIツールはループをmap()式にリファクタリングした後、テストを実行して動作が変わっていないことを確認できます。