Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonのfilter()関数でデータをフィルタリングする方法

プログラミングをしていると、「小さい方のリストの各要素が、大きい方のリストに含まれているかどうかを確認したい」「ある条件に合致する要素だけを抽出したい」といった場面によく出会います。そんなときに活躍するのが、Python組み込みのfilter()関数です。

この記事では、filter()関数の基本的な構文から、実際のコード例、実行結果までをわかりやすく解説します。

filter()関数の基本構文

filter(function_name, sequence)

各引数の意味は次のとおりです。

  • function_name:フィルタリングの条件を定義した関数の名前。各要素に対して呼び出され、True を返した要素だけが残ります。
  • sequence:フィルタリング対象となるシーケンス(リスト、タプル、セットなど、その他のイテレータも可)。

filter()関数は、関数が True を返した要素のみを含むイテレータ(filterオブジェクト)を返します。

具体的な使用例

ここでは、月名が入ったリストを用意し、その中から特定の条件に合う月だけを抽出してみましょう。まず、抽出条件となる月名のリストを作成し、それをもとに判定を行う関数を定義します。そして、その関数を filter() に渡すことで、元のリストから該当する要素だけを取り出します。

# 元となる月のリスト
months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug']

# フィルタリング条件を判定する関数
def filterMonths(month):
    target_months = ['Apr', 'Jun', 'Aug', 'Oct']
    if month in target_months:
        return True
    else:
        return False

# filter()関数を適用
result = filter(filterMonths, months)

print('フィルタリングされた月 :')
for month in result:
    print(month)

このコードでは、filterMonths() 関数が各月名を受け取り、target_months リストに含まれているかどうかを判定しています。含まれていれば True を返すため、その要素だけが結果に残る仕組みです。

実行結果

上記のコードを実行すると、以下のような出力が得られます。

フィルタリングされた月 :
Apr
Jun
Aug

元のリスト8つの月の中から、条件に合致する「Apr」「Jun」「Aug」の3つだけが抽出されていることがわかります。

まとめ

filter()関数を使えば、forループで条件分岐を書くことなく、簡潔にリストやタプルなどの要素を絞り込むことができます。条件判定用の関数を別途定義するだけで再利用もしやすいため、データの抽出やクリーニングなど、さまざまな場面で役立つ便利な組み込み関数です。

  1. Pythonのfilter()関数とは?使い方と実行例をわかりやすく解説

    Pythonのfilter()関数は、リストなどのシーケンスから特定の条件に合う要素だけを抽出(フィルタリング)するための組み込み関数です。フィルタリングの条件は、別途定義した関数の中で記述します。まず条件を定めたユーザー定義関数を作成し、その関数と対象となるリストをfilter()関数に引数として渡すことで、条件を満たす要素だけを取得できます。 基本構文 filter(filter_function, sequence) filter_functionには各要素を判定する関数を、sequenceにはリストやタプルなどのイテラブル(反復可能オブジェクト)を指定します。判定関数がTrueを返

  2. Pythonのラムダ式とfilter()関数を実例でわかりやすく解説

    この記事では、Python 3.x(およびそれ以前のバージョン)におけるラムダ式と filter() 関数について学びます。どちらの機能もPythonの標準ライブラリに組み込まれており、追加のインポートなしですぐに利用できます。 ラムダ式とは? ラムダ式を使うと、インライン関数(その場で定義する小さな関数)を簡潔に記述できます。ラムダ式は、キーワード lambda の後にカンマ区切りの引数リストと、それらの引数を使って評価される式を続けて記述します。 構文 lambda 引数: 式 戻り値: 引数を式に代入して計算された値が返されます。 ラムダ式には関数名を付けないため、「匿名関数(無名関数)