filter() v pythonu

Metoda filter() filtruje danou sekvenci pomocí funkce, která testuje každý prvek v sekvenci, zda je pravdivý nebo ne.

Syntaxe Python filter().

Metoda filter() v Krajta má následující syntaxi:

Syntax: filtr (funkce, sekvence)

Parametry:

  • funkce: funkce, která testuje, zda je každý prvek sekvence pravdivý nebo ne.
  • sekvence: sekvence, kterou je třeba filtrovat, to mohou být sady, seznamy, n-tice nebo kontejnery libovolných iterátorů.

Vrácení: iterátor, který je již filtrován.

Příklady funkcí filtru Python

Podívejme se na několik příkladů funkce filter() v Pythonu.

Funkce Python Filter s uživatelskou funkcí

V tomto příkladu používáme funkci filtru spolu s vlastní funkcí zábava() odfiltrovat samohlásky z Seznam Pythonu .

Krajta




# 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)>

Výstup:

The filtered letters are: e e 

Funkce filtru v Pythonu s Lambda

Funkce Python filter() se běžně používá s Funkce lambda . V tomto příkladu používáme funkci lambda k odfiltrování lichých a sudých čísel ze seznamu.

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))>

Výstup:

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

Funkce filtru v Pythonu s Lambda a uživatelskou funkcí

V tomto programu použijeme jak vlastní funkci is_multiple_of_3() stejně jako funkce lambda. Funkce filter() se používá k aplikaci této funkce na každý prvek číselného seznamu a funkce lambda se používá k iteraci každého prvku seznamu před aplikací podmínky. Tímto způsobem můžeme provádět další operace s každým prvkem před aplikací podmínky.

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)>

Výstup

[3, 6, 9] 

Analýza časové složitosti

  1. Funkce filtru se používá k filtrování seznamu čísel a aplikuje funkci lambda na každý prvek seznamu. Časová složitost funkce filtru je O(n), kde n je počet prvků v seznamu.
  2. Časová složitost funkce lambda je konstantní, O(1), protože provádí pouze jedinou aritmetickou operaci. Celková časová náročnost programu je tedy O(n).

Analýza pomocného prostoru

Program používá seznam k ukládání filtrovaných čísel, takže složitost prostoru je úměrná počtu filtrovaných čísel. V nejhorším případě, pokud jsou všechna čísla násobky 3, bude mít filtrovaný seznam n/3 prvků. Prostorová složitost je tedy O(n/3), což zjednodušuje na O(n) ve velkém O zápisu.