【Python入門】Pythonのfilter関数とは?使い方と活用方法を徹底解説(Python 3.11)

Python

はじめに

Pythonには、データを簡潔に処理できる便利な関数が多数用意されています。その中でも filter 関数は、リストやタプルの要素を条件に基づいて抽出する際に役立ちます。本記事では、filter 関数の基本から応用までを詳しく解説し、初心者でもすぐに使えるように説明します。

filter関数とは?

filter 関数は、指定した関数の条件を満たす要素だけを抽出するための関数です。リストやタプルなどのイテラブルオブジェクトに適用でき、ループ処理を使わずにシンプルなコードでデータをフィルタリングできます。

filter関数の基本構文

filter 関数の基本的な構文は以下のとおりです。

filter(function, iterable)
  • function: 各要素を評価する関数。True を返した要素のみが抽出されます。
  • iterable: フィルタリング対象となるリストやタプルなどのイテラブルオブジェクト。

filter 関数の結果は filter オブジェクトとして返されるため、リストに変換することが多いです。

list(filter(function, iterable))

filter関数の使用例

偶数のみを抽出する

def is_even(n):
    return n % 2 == 0

numbers = [1, 2, 3, 4, 5, 6]
even_numbers = list(filter(is_even, numbers))
print(even_numbers)  # [2, 4, 6]

空文字を除外する

words = ["apple", "", "banana", "cherry", ""]
non_empty_words = list(filter(lambda word: word != "", words))
print(non_empty_words)  # ['apple', 'banana', 'cherry']

filter関数の応用例

クラスの成績で合格者を抽出

def is_pass(score):
    return score >= 60

scores = [45, 78, 88, 59, 90, 33]
passed_students = list(filter(is_pass, scores))
print(passed_students)  # [78, 88, 90]

辞書のリストから特定条件に合うデータを抽出

people = [
    {"name": "Alice", "age": 25},
    {"name": "Bob", "age": 17},
    {"name": "Charlie", "age": 30}
]

adults = list(filter(lambda person: person["age"] >= 18, people))
print(adults)  # [{'name': 'Alice', 'age': 25}, {'name': 'Charlie', 'age': 30}]

まとめ

filter 関数は、リストや辞書のデータを条件に基づいて効率的にフィルタリングするのに便利な関数です。基本的な使い方から応用例までを学ぶことで、実践的なコードが書けるようになります。ぜひ、自分のプロジェクトに活用してみてください。