filter() i python

Filter()-metoden filtrerer den gitte sekvensen ved hjelp av en funksjon som tester hvert element i sekvensen om det er sant eller ikke.

Python filter() Syntaks

Filter()-metoden i Python har følgende syntaks:

Syntaks: filter (funksjon, sekvens)

Parametere:

  • funksjon: funksjon som tester om hvert element i en sekvens er sant eller ikke.
  • sekvens: sekvensen som må filtreres, kan det være sett, lister, tupler eller beholdere av alle iteratorer.

Returnerer: en iterator som allerede er filtrert.

Python-filter Funksjonseksempler

La oss se noen eksempler på filter()-funksjonen i Python.

Python-filterfunksjon med en egendefinert funksjon

I dette eksemplet bruker vi filterfunksjonen sammen med en egendefinert funksjon moro() å filtrere ut vokaler fra Python-liste .

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

Produksjon:

The filtered letters are: e e 

Filterfunksjon i Python med Lambda

Python filter()-funksjonen brukes vanligvis med Lambdafunksjoner . I dette eksemplet bruker vi lambda-funksjonen til å filtrere ut oddetall og partall fra en liste.

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

Produksjon:

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

Filterfunksjon i Python med Lambda og egendefinert funksjon

I dette programmet vil vi bruke både en egendefinert funksjon is_multiple_of_3() samt lambdafunksjon. Filter()-funksjonen brukes til å bruke denne funksjonen på hvert element i talllisten, og lambda-funksjonen brukes til å iterere over hvert element i listen før betingelsen tas i bruk. På denne måten kan vi utføre ytterligere operasjoner på hvert element før vi bruker betingelsen.

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

Produksjon

[3, 6, 9] 

Tidskompleksitetsanalyse

  1. Filterfunksjonen brukes til å filtrere listen over tall, og den bruker lambda-funksjonen på hvert element i listen. Tidskompleksiteten til filterfunksjonen er O(n), der n er antall elementer i listen.
  2. Tidskompleksiteten til lambdafunksjonen er konstant, O(1), siden den kun utfører en enkelt aritmetisk operasjon. Derfor er den totale tidskompleksiteten til programmet O(n).

Auxiliary Space analyse

Programmet bruker en liste for å lagre de filtrerte tallene, så plasskompleksiteten er proporsjonal med antall filtrerte tall. I verste fall, hvis alle tallene er multipler av 3, vil den filtrerte listen ha n/3 elementer. Derfor er romkompleksiteten O(n/3), som forenkler til O(n) i stor O-notasjon.