Metóda filter() filtruje danú sekvenciu pomocou funkcie, ktorá testuje každý prvok v sekvencii, či je pravdivý alebo nie.
Syntax Python filter().
Metóda filter() v Python má nasledujúcu syntax:
Syntax: filter (funkcia, postupnosť)
Parametre:
iterovať cez mapu java
- funkcia: funkcia, ktorá testuje, či je každý prvok sekvencie pravdivý alebo nie.
- poradie: sekvencie, ktoré je potrebné filtrovať, môžu to byť množiny, zoznamy, n-tice alebo kontajnery akýchkoľvek iterátorov.
Vrátenie: iterátor, ktorý je už filtrovaný.
Príklady funkcií filtra Python
Pozrime sa na niekoľko príkladov funkcie filter() v Pythone.
Funkcia Python Filter s vlastnou funkciou
V tomto príklade používame funkciu filtra spolu s vlastnou funkciou zábava () odfiltrovať samohlásky z Zoznam Python .
Python
cesta nastavená v jazyku Java
# 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ýkon:
The filtered letters are: e e>
Funkcia filtra v Pythone s Lambda
Funkcia Python filter() sa bežne používa s Lambda funkcie . V tomto príklade používame funkciu lambda na odfiltrovanie nepárnych a párnych čísel zo zoznamu.
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))> |
>
formátovať reťazec java
>
Výkon:
[1, 3, 5, 13] [0, 2, 8]>
Funkcia filtra v Pythone s Lambda a užívateľskou funkciou
V tomto programe použijeme vlastnú funkciu is_multiple_of_3() ako aj funkciu lambda. Funkcia filter() sa používa na použitie tejto funkcie na každý prvok číselného zoznamu a funkcia lambda sa používa na iteráciu každého prvku zoznamu pred aplikáciou podmienky. Týmto spôsobom môžeme vykonať ďalšie operácie na každom prvku pred aplikáciou podmienky.
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ýkon
životný cyklus sdlc
[3, 6, 9]>
Analýza časovej zložitosti
- Funkcia filtra sa používa na filtrovanie zoznamu čísel a aplikuje funkciu lambda na každý prvok zoznamu. Časová zložitosť funkcie filtra je O(n), kde n je počet prvkov v zozname.
- Časová zložitosť funkcie lambda je konštantná, O(1), pretože vykonáva iba jednu aritmetickú operáciu. Celková časová náročnosť programu je teda O(n).
Analýza pomocného priestoru
Program používa zoznam na ukladanie filtrovaných čísel, takže zložitosť priestoru je úmerná počtu filtrovaných čísel. V najhoršom prípade, ak sú všetky čísla násobkami 3, bude mať filtrovaný zoznam n/3 prvkov. Priestorová zložitosť je preto O(n/3), čo sa zjednodušuje na O(n) vo veľkom O.