• Xでシェア
  • LINEでシェア
  • このエントリーをはてなブックマークに追加

Python filterの使い方

この記事のポイント

Python初心者でも安心してfilter関数を学習できるよう、基本から実用例まで段階的に解説していきます。

  • 条件に合う要素だけを効率的に抽出することができる 
  • 基本的な構文からlambda式を使った応用パターンまで記述できる
  • 実際の開発現場で役立つ8つの具体的なコード例を知る

これらのポイントを押さえることで、データ処理を格段に効率化できるようになります。

目次

filterとは?

Pythonのfilterは、リストやタプルなどの繰り返し処理ができるデータから、特定の条件を満たす要素だけを取り出すための組み込み関数です。第一引数に条件を判定する関数を、第二引数に対象となるデータを渡して使います。

条件をチェックする関数がTrueを返した要素だけが結果として返されるので、大量のデータから特定の条件を満たすものだけを効率的に取り出せます。for文やif文を使って同じことをする場合と比べて、より簡潔で読みやすいコードを書くことができます。

【関連】
Pythonをもっと詳しく学ぶならpaizaラーニング

基本構文

filter関数の基本的な書き方は「filter(関数, イテラブル:繰り返し可能なデータ)」の形式です。この関数部分には条件を判定する関数やlambda式を、イテラブル部分には処理したいリストやタプルなどを指定します。

filter関数の結果はfilterオブジェクトとして返され、これはそのままでは内容を確認できないため、通常はlist()を使ってリスト形式に変換してから使います。以下に基本的なコード例を示します。

# 偶数のみを抽出する例 numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] even_numbers = list(filter(lambda x: x % 2 == 0, numbers)) print(even_numbers)

出力結果

[2, 4, 6, 8, 10]
# 関数を定義して使用する例 def is_positive(num): return num > 0 values = [-3, -1, 0, 2, 5, -8] positive_values = list(filter(is_positive, values)) print(positive_values)

出力結果

[2, 5]

実用例

ここからは実際の開発でよく使われるfilter関数の便利な使い方を紹介します。この関数は、文字列の処理や数値データの絞り込み、辞書やオブジェクトの操作など、さまざまな場面で役立ちます。

それぞれの例では実行可能なサンプルコードと出力結果を示し、どのような場面で活用できるかを具体的に解説していきます。実務でそのまま使える、実用性を重視した内容になっています。

文字列長による動物名フィルタリング

動物の名前が入ったリストから、文字数が特定の条件を満たすものだけを抽出します。これは文字列を処理する際によく使われるやり方で、データの前処理や表示を制御する際に活用できます。

animals = ['イヌ', 'ネコ', 'ゾウ', 'キリン', 'カバ'] long_names = list(filter(lambda name: len(name) >= 3, animals)) print(long_names)

出力結果

['キリン']

数値範囲による動物の体重フィルタリング

動物の体重データから、特定の重さの範囲に当てはまるものだけを抽出します。

この数値の範囲を指定してデータを絞り込むやり方は、統計処理やデータ分析でよく使われる手法です。

animal_weights = [('イヌ', 15), ('ゾウ', 5000), ('ネコ', 4), ('キリン', 800)] heavy_animals = list(filter(lambda x: x[1] > 100, animal_weights)) print(heavy_animals)

出力結果

[('ゾウ', 5000), ('キリン', 800)]

特定文字を含む動物名の抽出

動物の名前が並んだリストから、特定の文字を含んでいるものだけを選び出す方法です。

これは、文字列を検索する処理や、部分一致による検索を行う処理でよく使われるパターンです。

zoo_animals = ['ライオン', 'トラ', 'ヒョウ', 'チーター', 'オオカミ'] animals_with_vowel = list(filter(lambda name: 'ウ' in name, zoo_animals)) print(animals_with_vowel)

出力結果

['ヒョウ']

辞書データから条件に合う動物情報の抽出

辞書形式で管理された動物のデータから、特定の条件に合うものだけを取り出します。

これはデータベースからデータを検索するような使い方で、複雑な条件を指定して検索する処理に応用できます。

animals_data = [ {'name': 'パンダ', 'type': '哺乳類', 'endangered': True}, {'name': 'イルカ', 'type': '哺乳類', 'endangered': False} ] endangered = list(filter(lambda x: x['endangered'], animals_data)) print(endangered)

出力結果

[{'name': 'パンダ', 'type': '哺乳類', 'endangered': True}]

None値を除外した動物リストの作成

リストに含まれるNone(何もないことを示す値)や空の要素を取り除いて、有効なデータのみを残します。

これはデータクレンジングと呼ばれる、データをきれいに整えるための基本的な処理で、実際の開発では頻繁に使われます。

mixed_animals = ['ウサギ', None, 'リス', '', 'ハムスター', None] clean_animals = list(filter(None, mixed_animals)) print(clean_animals)

出力結果

['ウサギ', 'リス', 'ハムスター']

複数条件による動物データの絞り込み

動物のデータから、年齢と種類の両方の条件を満たすものだけを抽出します。このように複雑な条件を指定することにより、より細かく正確にデータを絞り込むことが可能になります。

pets = [('ハムスター', 1), ('ウサギ', 3), ('インコ', 5), ('カメ', 8)] young_pets = list(filter(lambda pet: pet[1] < 4 and 'ウサギ' in pet[0], pets)) print(young_pets)

出力結果

[('ウサギ', 3)]

偶数インデックスの動物名抽出

リストの中から、偶数番目の位置にある動物の名前だけを取り出します。enumerate関数と組み合わせることで、データの位置情報を活用した柔軟な抽出処理が実現できます。

safari_animals = ['ライオン', 'シマウマ', 'サイ', 'カバ', 'チーター'] even_index_animals = list(filter(lambda x: x[0] % 2 == 0, enumerate(safari_animals))) result = [animal for index, animal in even_index_animals] print(result)

出力結果

['ライオン', 'サイ', 'チーター']

文字列パターンマッチングによる動物選択

正規表現を使って、特定の文字列パターンに一致する動物の名前を抽出します。この方法は、より高度な文字列の検索や、特定の命名規則に従ったデータだけを抽出したい場合に活用できます。

aquarium_animals = ['マグロ', 'イワシ', 'タコ', 'イカ', 'クジラ'] animals_ending_with_vowel = list(filter(lambda name: name.endswith('ラ'), aquarium_animals)) print(animals_ending_with_vowel)

出力結果

['クジラ']

まとめ

filter関数は、条件に合うデータだけを効率的に絞り込むためのとても便利な機能です。基本的な数値や文字列の処理から、複雑な辞書データの操作まで幅広く扱えます。lambda式と組み合わせると、コードを短く、読みやすく書くことができ、データ処理をとても効率的に進められます。

Python filterの活躍する場面

  • データクレンジングで不要な要素を取り除きたいとき
  • 条件検索機能で結果を絞り込みたいとき
  • ある特定の範囲のデータだけを抽出して、統計的な処理を行いたいとき

重要なポイント 

  • filter関数の結果はそのままでは使えない「filterオブジェクト」なのでlist変換が必要になる 
  • lambda式を使うことで条件を短く、簡単に書くことができる
  • None値のような意味のないデータを取り除くといった基本的なデータ整理(クリーニング)にも活用できる

filter関数を習得することで、Pythonでのデータ処理能力が格段に向上し、より効率的なプログラムを作れるようになります。ぜひ実際のプロジェクトでも活用してみてください。

レベルを更に上げたい方はpaizaプログラミングスキルチェックへ

  1. paizaラーニングトップ
  2. リファレンス
  3. Pythonのリファレンス記事一覧
  4. Python filterの使い方