Python での filter() 関数の使用方法
Python の filter() 関数を使用してコレクションから要素を抽出する方法を学びます。フィルターをリスト内包表記およびラムダ コールバックと比較します。
概要
データ フィルタリングは、アプリケーション プログラミングの中核となるタスクです。多くの場合、リストを検索して、プロファイル データベースからアクティブ ユーザーを抽出したり、センサー ログから負の数値を除外したりするなど、特定の基準を満たす要素を抽出する必要があります。 Python は、この目的のために `filter()` という名前の組み込み関数ツールを提供します。
`filter(function, iterable)` 関数は、フィルタリング関数と反復可能関数を引数として受け取ります。関数の引数は、各要素のブール値 (「True」または「False」) を返さなければなりません。 `filter()` 関数は各要素を評価し、`True` と評価された要素のみを保持し、結果を含む反復子オブジェクト (`filter` オブジェクト) を返します。
`map()` と同様に、`filter()` は要素を遅延評価します。標準リストがすぐに必要な場合は、`list()` コンストラクター: `list(filter(func, data))` を使用して出力をキャストします。関数パラメータとして `None` を渡すと (例: `filter(None, data)`)、Python は自動的に false の要素をすべて除外します。これは空の値をクリアするための優れた省略表現です。
コードと実行の出力
このスクリプトは、filter() を使用した数値配列のフィルタリング、辞書項目の抽出、および偽の空文字列の破棄を示します。
numbers = [-5, -2, 0, 3, 8, -1]
# 1. Filter positive numbers using a lambda function
positives = list(filter(lambda x: x > 0, numbers))
print("Positives only:", positives)
# 2. Filter list of strings by character length
words = ["cat", "elephant", "dog", "giraffe"]
long_words = list(filter(lambda w: len(w) > 4, words))
print("Words longer than 4 chars:", long_words)
# 3. Shorthand: Remove all falsy values from a list by passing None
mixed_data = ["hello", "", "world", None, False, "active"]
clean_data = list(filter(None, mixed_data))
print("Falsy values removed:", clean_data)Positives only: [3, 8]
Words longer than 4 chars: ['elephant', 'giraffe']
Falsy values removed: ['hello', 'world', 'active']段階的な実装
- 要素を受け入れ、フィルター基準を表すブール値を返す関数を定義します。
- filter(function, iterable) を呼び出して、一致の遅延反復子を作成します。
- レコードを操作する必要がある場合は、list(filter(...)) を使用して、結果のフィルター オブジェクトをリストにキャストします。
- すべての偽の値 (None、0、空の文字列など) を除外するには、関数の引数として None を渡します。
よくある質問
filter() に渡された関数がブール値を返さなかった場合はどうなりますか?
Python は戻り値の真実性を評価します。ブール値のコンテキストで値が True と評価された場合、要素は保持されます。
filter() またはリスト内包表記を使用する必要がありますか?
読みやすさの観点から、if 条件を含むリスト内包表記 (例: [x for x in list ifcondition]) が好まれることがよくありますが、特に既存の組み込み関数を使用する場合、filter() はクリーンでパフォーマンスが高くなります。
関連トピック
Python でラムダ関数を使用する方法を学びます。匿名関数、インライン コールバック、ラムダ キーを使用したリスト データの並べ替えをマスターします。
Python でリスト内包表記を使用する方法Python でリスト内包表記を使用する方法を学びます。簡潔なループを作成し、条件付きフィルターを適用し、クリーンなビジュアル構文で行列を構築します。
Python での map() 関数の使用方法Python の map() 関数の使用方法を学びます。ループを書かずに反復可能オブジェクトに関数を適用する方法をマスターし、マップをリスト内包表記と比較します。
推奨される Python リソース
関連するインタラクティブなチュートリアル、チートシート、コード比較で知識を深めてください。
Python 関数
Python 関数をマスターします。 def を使用して再利用可能なコードを作成する方法、引数を定義する方法、戻り値を定義する方法、ローカルおよびグローバルなスコープを理解する方法を学びます。
Python 数学モジュール関数のチートシート
Python 数学標準ライブラリのクイック リファレンス ガイド。三角関数、対数関数、丸め関数、算術関数の使用方法を学びます。
Python と JavaScript: どちらのプログラミング言語が最適ですか?
Python と JavaScript の包括的な比較。構文の違い、パフォーマンス、使用例 (バックエンドとフロントエンド)、およびコーディング例を調べます。