logo

filter() a Python

El mètode filter() filtra la seqüència donada amb l'ajuda d'una funció que prova que cada element de la seqüència sigui cert o no.

Sintaxi de Python filter().

El mètode filter() a Python té la sintaxi següent:



Sintaxi: filtre (funció, seqüència)

Paràmetres:

què és hivernar
  • funció: funció que prova si cada element d'una seqüència és cert o no.
  • seqüència: seqüència que cal filtrar, pot ser conjunts, llistes, tuples o contenidors de qualsevol iterador.

Devolucions: un iterador que ja està filtrat.



Exemples de funcions de filtre Python

Vegem alguns exemples de la funció filter() a Python.

Funció de filtre de Python amb una funció personalitzada

En aquest exemple, estem utilitzant la funció de filtre juntament amb una funció personalitzada diversió() per filtrar les vocals de la Llista de Python .

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

>

explicar la independència de les dades

>

Sortida:

The filtered letters are: e e>

Funció de filtre a Python amb Lambda

La funció Python filter() s'utilitza normalment amb Funcions lambda . En aquest exemple, estem utilitzant la funció lambda per filtrar els nombres parells i senars d'una llista.

Python 3




selecciona com

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

>

>

Sortida:

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

Funció de filtre a Python amb Lambda i funció personalitzada

En aquest programa, utilitzarem tant una funció personalitzada és_múltiple_de_3() així com una funció lambda. La funció filter() s'utilitza per aplicar aquesta funció a cada element de la llista de números, i la funció lambda s'utilitza per iterar sobre cada element de la llista abans d'aplicar la condició. D'aquesta manera, podem realitzar operacions addicionals sobre cada element abans d'aplicar la condició.

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

operadors javascript

>

>

Sortida

[3, 6, 9]>

Anàlisi de la complexitat temporal

  1. La funció de filtre s'utilitza per filtrar la llista de números i aplica la funció lambda a cada element de la llista. La complexitat temporal de la funció de filtre és O(n), on n és el nombre d'elements de la llista.
  2. La complexitat temporal de la funció lambda és constant, O(1), ja que només realitza una única operació aritmètica. Per tant, la complexitat temporal global del programa és O(n).

Anàlisi de l'espai auxiliar

El programa utilitza una llista per emmagatzemar els números filtrats, de manera que la complexitat de l'espai és proporcional al nombre de nombres filtrats. En el pitjor dels casos, si tots els nombres són múltiples de 3, la llista filtrada tindrà n/3 elements. Per tant, la complexitat espacial és O(n/3), que es simplifica a O(n) en notació O gran.