Python の filter メソッドの使い方
Python の filter メソッドは、指定された関数によってフィルタリングされた要素を返すイテレータを生成します。この記事では、filter メソッドの使い方についてソースコード例を交えて解説します。
例1: 偶数だけをフィルタリング
まず、以下のソースコードは、リスト内の偶数だけをフィルタリングして新しいリストを作成します。
1 2 3 4 5 6 7 8 |
def is_even(num): return num % 2 == 0 numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9] even_numbers = list(filter(is_even, numbers)) print(even_numbers) |
出力結果
[2, 4, 6, 8]
次に、filter メソッドを使わずに同じ結果を得る方法を見てみましょう。
1 2 3 4 |
even_numbers_without_filter = [num for num in numbers if num % 2 == 0] print(even_numbers_without_filter) |
出力結果
[2, 4, 6, 8]
KindleUnlimited会員であれば、全ての本をご覧頂けます。 リストとラムダ式を理解すれば、Pythonプログラミングの世界が変わる 第1版
例2: 長さが 5 文字以上の文字列をフィルタリング
この例では、リスト内の文字列のうち、長さが 5 文字以上のものだけをフィルタリングします。
1 2 3 4 5 6 7 8 |
def has_five_or_more_chars(word): return len(word) >= 5 words = ["apple", "banana", "cherry", "date", "fig", "grape"] long_words = list(filter(has_five_or_more_chars, words)) print(long_words) |
出力結果
['apple', 'banana', 'cherry', 'grape']
filter メソッドを使わずに同じ結果を得る方法を見てみましょう。
1 2 3 4 |
long_words_without_filter = [word for word in words if len(word) >= 5] print(long_words_without_filter) |
出力結果
['apple', 'banana', 'cherry', 'grape']
例3: 負の数だけをフィルタリング
この例では、リスト内の数値のうち、負の数だけをフィルタリングします。
1 2 3 4 5 6 7 8 |
def is_negative(num): return num < 0 numbers = [5, -3, 12, -7, 9, -5, 13] negative_numbers = list(filter(is_negative, numbers)) print(negative_numbers) |
出力結果
[-3, -7, -5]
filter メソッドを使わずに同じ結果を得る方法を見てみましょう。
1 2 3 4 |
negative_numbers_without_filter = [num for num in numbers if num < 0] print(negative_numbers_without_filter) |
出力結果
[-3, -7, -5]
これらの例から、Python の filter メソッドを使って特定の条件に合致する要素をフィルタリングする方法と、リスト内包表記を使って同じ結果を得る方法を学びました。
filterメソッドとその他の関数との組み合わせ
filterメソッドは他の関数と組み合わせて使用することで、さらに強力なコードを書くことができます。ここでは、filterメソッドとmapメソッドを組み合わせた例を見ていきましょう。
例4: 文字列のリストから数値のリストへの変換とフィルタリング
この例では、文字列のリストを数値のリストに変換し、その後偶数だけをフィルタリングします。
1 2 3 4 5 6 7 8 9 |
def is_even(num): return num % 2 == 0 str_numbers = ['2', '7', '5', '10', '3', '8'] int_numbers = list(map(int, str_numbers)) even_numbers = list(filter(is_even, int_numbers)) print(even_numbers) |
出力結果
[2, 10, 8]
この例では、まず map メソッドを使って文字列のリストを数値のリストに変換しました。次に、filter メソッドを使って偶数だけをフィルタリングしました。このように filter メソッドと他の関数を組み合わせることで、効率的にデータを処理することができます。
まとめ
この記事では、Python の filter メソッドの使い方について解説しました。
filter メソッドを使ってリストから特定の条件に合致する要素をフィルタリングする方法や、リスト内包表記を使って同じ結果を得る方法を学びました。
また、filter メソッドを他の関数と組み合わせて使用する例も紹介しました。
これらの知識を活用して、Python で効率的なデータ処理を行いましょう!