Python での map() 関数の使用方法
Python の map() 関数の使用方法を学びます。ループを書かずに反復可能オブジェクトに関数を適用する方法をマスターし、マップをリスト内包表記と比較します。
概要
データのコレクションを処理するときは、多くの場合、反復可能な項目ごとに特定の変換を適用する必要があります。たとえば、文字列数値のリストを整数に変換したり、文字列のデータベース配列を小文字に変換して正規化したりします。 Python では、冗長な `for` ループを記述する代わりに、`map()` と呼ばれる組み込みツールが提供されています。
`map(function, iterable)` 関数は、変換関数と反復可能関数を引数として受け取ります。この関数は反復可能オブジェクトの各要素に適用され、反復子オブジェクト (「マップ」オブジェクト) を返します。これは反復子として返されるため、計算は遅延して実行されます。要素は反復処理時にのみ処理されるため、大規模なデータセットのメモリが節約されます。
マップ オブジェクトのリスト表現をすぐに取得するには、`list()` コンストラクター: `list(map(func, data))` を使用して結果をキャストする必要があります。インライン実行のために、標準関数、標準ライブラリ関数 (`str` や `len` など)、または `lambda` キーワードで宣言されたカスタム匿名関数を直接 `map()` に渡すことができます。
コードと実行の出力
このスクリプトは、文字列変換を伴う map() 関数を使用したコレクションの変更、リスト項目の数値へのマッピング、ラムダ コールバックの使用を示します。
# 1. Map string conversion over a list of numbers
numbers = [1, 2, 3, 4]
string_numbers = list(map(str, numbers))
print("Mapped to strings:", string_numbers)
# 2. Square numbers using a lambda function inside map()
squared = list(map(lambda x: x**2, numbers))
print("Squared numbers:", squared)
# 3. Apply custom logic function to items
def normalize_name(name):
return name.strip().capitalize()
names = [" alice", "BOB ", " charlie "]
clean_names = list(map(normalize_name, names))
print("Clean names list:", clean_names)Mapped to strings: ['1', '2', '3', '4']
Squared numbers: [1, 4, 9, 16]
Clean names list: ['Alice', 'Bob', 'Charlie']段階的な実装
- コレクション内のすべての要素に適用する変換関数を特定します。
- map(function_name, iterable) を呼び出して、変換された要素の遅延反復子を作成します。
- 標準リストとしてすべての要素にすぐにアクセスする必要がある場合は、map() 呼び出しを list() 内にラップします。
- map() をラムダ関数と組み合わせて、迅速な 1 回限りのインライン変換を実現します。
よくある質問
map() はリスト内包表記よりも優れていますか?
コミュニティでは一般に、リスト内包表記の方が読みやすく、Python 的であると考えられています。ただし、既存の組み込み関数 (map(str, list) など) を適用すると、最適化された C コード ループが実行されるため、map() の方が高速になる可能性があります。
map() は複数のイテラブルを受け取ることができますか?
はい!変換関数が複数の引数を取る場合は、複数の反復可能オブジェクトを map() に渡すことができます。たとえば、map(lambda x, y: x + y, list1, list2) は要素をペアごとに追加します。
関連トピック
Python でラムダ関数を使用する方法を学びます。匿名関数、インライン コールバック、ラムダ キーを使用したリスト データの並べ替えをマスターします。
Python でリスト内包表記を使用する方法Python でリスト内包表記を使用する方法を学びます。簡潔なループを作成し、条件付きフィルターを適用し、クリーンなビジュアル構文で行列を構築します。
Python での filter() 関数の使用方法Python の filter() 関数を使用してコレクションから要素を抽出する方法を学びます。フィルターをリスト内包表記およびラムダ コールバックと比較します。
推奨される Python リソース
関連するインタラクティブなチュートリアル、チートシート、コード比較で知識を深めてください。
Python 関数
Python 関数をマスターします。 def を使用して再利用可能なコードを作成する方法、引数を定義する方法、戻り値を定義する方法、ローカルおよびグローバルなスコープを理解する方法を学びます。
Python 数学モジュール関数のチートシート
Python 数学標準ライブラリのクイック リファレンス ガイド。三角関数、対数関数、丸め関数、算術関数の使用方法を学びます。
Python と JavaScript: どちらのプログラミング言語が最適ですか?
Python と JavaScript の包括的な比較。構文の違い、パフォーマンス、使用例 (バックエンドとフロントエンド)、およびコーディング例を調べます。