filter() pythonissa
Filter()-menetelmä suodattaa annetun sekvenssin funktion avulla, joka testaa sekvenssin jokaisen elementin olevan tosi vai ei.
Python-suodatin() Syntaksi
Filter()-menetelmä sisään Python on seuraava syntaksi:
Syntaksi: suodatin (funktio, järjestys)
Parametrit:
- toiminto: funktio, joka testaa, onko sekvenssin jokainen elementti tosi vai ei.
- järjestys: sekvenssi, joka on suodatettava, se voi olla minkä tahansa iteraattorin joukkoja, listoja, monikkoja tai säiliöitä.
Palautukset: iteraattori, joka on jo suodatettu.
Python-suodattimen toimintoesimerkkejä
Katsotaanpa muutamia esimerkkejä Pythonin filter()-funktiosta.
Python-suodatintoiminto mukautetulla funktiolla
Tässä esimerkissä käytämme suodatintoimintoa yhdessä mukautetun toiminnon kanssa hauskaa () suodattaaksesi vokaalit pois Python-lista .
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)> |
Lähtö:
The filtered letters are: e e
Suodatintoiminto Pythonissa Lambdan kanssa
Python filter() -funktiota käytetään yleensä Lambda toiminnot . Tässä esimerkissä käytämme lambda-funktiota suodattamaan parittomat ja parilliset luvut luettelosta.
Python 3
# 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))> |
Lähtö:
[1, 3, 5, 13] [0, 2, 8]
Suodatintoiminto Pythonissa lambdalla ja mukautetulla funktiolla
Tässä ohjelmassa käytämme molempia mukautettuja toimintoja is_multiple_of_3() sekä lambda-toiminto. Filter()-funktiota käytetään soveltamaan tätä funktiota jokaiseen numeroluettelon elementtiin, ja lambda-funktiota käytetään toistamaan luettelon jokainen elementti ennen ehdon soveltamista. Tällä tavalla voimme suorittaa lisätoimintoja jokaiselle elementille ennen ehdon soveltamista.
Python 3
# 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)> |
Lähtö
[3, 6, 9]
Aika monimutkaisuusanalyysi
- Suodatintoimintoa käytetään numeroluettelon suodattamiseen, ja se soveltaa lambda-funktiota luettelon jokaiseen elementtiin. Suodatinfunktion aikamonimutkaisuus on O(n), missä n on listan elementtien lukumäärä.
- Lambda-funktion aikamonimutkaisuus on vakio, O(1), koska se suorittaa vain yhden aritmeettisen toiminnon. Siksi ohjelman kokonaisaika monimutkaisuus on O(n).
Aputila-analyysi
Ohjelma käyttää luetteloa suodatettujen lukujen tallentamiseen, joten avaruuden monimutkaisuus on verrannollinen suodatettujen lukujen määrään. Pahimmassa tapauksessa, jos kaikki luvut ovat 3:n kerrannaisia, suodatetussa luettelossa on n/3 elementtiä. Siksi avaruuden kompleksisuus on O(n/3), mikä yksinkertaistuu O(n):ksi isolla O-merkinnällä.