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:
string.compareto c#
- 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)> |
>
Shilpa Shetty
>
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))> |
kreslení obdélníku gimp
>
>
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)> |
>
java tisk
>Výstup
[3, 6, 9]>
Analýza časové složitosti
- 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.
- Č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.