Pythonでfilter関数を使って条件に合った要素をフィルタリングする方法

この記事では、Pythonの`filter`関数を用いてリストやイテラブルなオブジェクトから特定の条件に合った要素をフィルタリングする方法について詳しく解説します。具体的なコード例とその解説、応用例を含めています。

目次

filter関数の基本的な使い方

Pythonの`filter`関数は、ある条件に合った要素だけを抽出するために用います。基本的な形式は以下のとおりです。

filter(条件関数, イテラブル)

簡単な例

例として、リストから偶数だけを抽出するコードを考えます。

numbers = [1, 2, 3, 4, 5]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers)  # 出力: [2, 4]

この例では、`lambda`を用いて偶数であるかどうかを判定する条件関数を設定しています。

filter関数の高度な使い方

カスタム関数の使用

`lambda`だけでなく、自分で定義した関数を条件として使用することもできます。

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

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

複数の条件を設定

複数の条件を設定する場合は、条件関数内でそれらを組み合わせます。

def multiple_conditions(n):
    return n % 2 == 0 and n > 2

numbers = [1, 2, 3, 4, 5]
filtered_numbers = list(filter(multiple_conditions, numbers))
print(filtered_numbers)  # 出力: [4]

応用例

テキストデータのフィルタリング

文字列のリストから特定の文字を含むものだけを抽出する例です。

words = ["apple", "banana", "cherry"]
filtered_words = list(filter(lambda x: 'a' in x, words))
print(filtered_words)  # 出力: ['apple', 'banana']

辞書データのフィルタリング

辞書のリストから特定のキーと値に一致する辞書だけを抽出する例です。

data = [{"name": "Alice", "age": 30}, {"name": "Bob", "age": 25}, {"name": "Charlie", "age": 35}]
filtered_data = list(filter(lambda x: x['age'] > 30, data))
print(filtered_data)  # 出力: [{'name': 'Charlie', 'age': 35}]

複雑な条件のフィルタリング

複数のリストを入力として、それぞれから条件に合う要素を抽出する例です。

def complex_filter(n, m):
    return n % 2 == 0 and m % 2 != 0

numbers1 = [1, 2, 3, 4, 5]
numbers2 = [10, 11, 12, 13, 14]
filtered_pairs = list(filter(lambda pair: complex_filter(pair[0], pair[1]), zip(numbers1, numbers2)))
print(filtered_pairs)  # 出力: [(2, 11), (4, 13)]

まとめ

Pythonの`filter`関数は、リストやイテラブルなオブジェクトから特定の条件に合った要素を効率よく抽出する強力なツールです。この記事で紹介した基本的な使い方から高度な使い方、応用例をぜひ参

考にして、自分のコードに活かしてください。

コメント

コメントする

目次