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

  1. 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ä.
  2. 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ä.