Pythonのfilter()

filter() メソッドは、シーケンス内の各要素が true かどうかをテストする関数を使用して、指定されたシーケンスをフィルター処理します。

Python の filter() 構文

の filter() メソッド パイソン 次の構文があります。

構文: フィルター(関数、シーケンス)

パラメーター:

  • 関数: シーケンスの各要素が true かどうかをテストする関数。
  • 順序: フィルタリングが必要なシーケンスは、セット、リスト、タプル、または任意のイテレータのコンテナです。

戻り値: すでにフィルタリングされているイテレータ。

Pythonフィルター関数の例

Python の filter() 関数の例をいくつか見てみましょう。

カスタム関数を使用した Python フィルター関数

この例では、フィルター関数とカスタム関数を使用しています。 楽しい() から母音をフィルタリングします。 Python リスト

パイソン




# function that filters vowels> def> fun(variable):> > letters> => [> 'a'> ,> 'e'> ,> 'i'> ,> 'o'> ,> 'u'> ]> > if> (variable> in> letters):> > return> True> > else> :> > return> False> # sequence> sequence> => [> 'g'> ,> 'e'> ,> 'e'> ,> 'j'> ,> 'k'> ,> 's'> ,> 'p'> ,> 'r'> ]> # using filter function> filtered> => filter> (fun, sequence)> print> (> 'The filtered letters are:'> )> for> s> in> filtered:> > print> (s)>

出力:

The filtered letters are: e e 

Lambda を使用した Python のフィルター関数

Pythonのfilter()関数は通常、 ラムダ関数 。この例では、ラムダ関数を使用して、リストから奇数と偶数をフィルターで除外しています。

Python3




# a list contains both even and odd numbers.> seq> => [> 0> ,> 1> ,> 2> ,> 3> ,> 5> ,> 8> ,> 13> ]> # result contains odd numbers of the list> result> => filter> (> lambda> x: x> %> 2> !> => 0> , seq)> print> (> list> (result))> # result contains even numbers of the list> result> => filter> (> lambda> x: x> %> 2> => => 0> , seq)> print> (> list> (result))>

出力:

[1, 3, 5, 13] [0, 2, 8] 

Lambda とカスタム関数を使用した Python のフィルター関数

このプログラムでは、カスタム関数の両方を使用します。 is_multiple_of_3() ラムダ関数も同様です。 filter() 関数はこの関数を数値リストの各要素に適用するために使用され、ラムダ関数は条件を適用する前にリストの各要素を反復処理するために使用されます。こうすることで、条件を適用する前に各要素に対して追加の操作を実行できます。

Python3




# Define a function to check> # if a number is a multiple of 3> def> is_multiple_of_3(num):> > return> num> %> 3> => => 0> # Create a list of numbers to filter> numbers> => [> 1> ,> 2> ,> 3> ,> 4> ,> 5> ,> 6> ,> 7> ,> 8> ,> 9> ,> 10> ]> # Use filter and a lambda function to> # filter the list of numbers and only> # keep the ones that are multiples of 3> result> => list> (> filter> (> lambda> x: is_multiple_of_3(x), numbers))> # Print the result> print> (result)>

出力

[3, 6, 9] 

時間計算量の分析

  1. filter 関数は数値のリストをフィルター処理するために使用され、ラムダ関数をリストの各要素に適用します。フィルター関数の時間計算量は O(n) です。ここで、n はリスト内の要素の数です。
  2. ラムダ関数は単一の算術演算のみを実行するため、ラムダ関数の時間計算量は一定で O(1) です。したがって、プログラム全体の時間計算量は O(n) になります。

補助スペース分析

プログラムはリストを使用してフィルタリングされた数値を保存するため、空間の複雑さはフィルタリングされた数値の数に比例します。最悪の場合、すべての数値が 3 の倍数である場合、フィルター処理されたリストには n/3 個の要素が含まれます。したがって、空間複雑さは O(n/3) であり、big O 表記では O(n) に単純化されます。