logo

Funció Python filter().

La funció filter() integrada de Python també és potent; per dur a terme un procediment de filtrat de dades en seqüències com llistes, tuples i cadenes. La funció filter() s'utilitza per aplicar una funció a cada element d'un iterable (com una llista o una tupla) i retornar un altre iterable que conté només els elements per als quals la funció torna True. En aquesta línia, filter() ens permet filtrar elements d'una agrupació en funció d'alguna condició. El primer argument pot ser Cap si la funció no està disponible i només retorna elements que són True.

Sintaxi:

 filter (function, iterable) 

Paràmetres

funció: És una funció. Si s'estableix en Cap, només retorna els elements que són True.

Iterable: Qualsevol seqüència iterable com ara llista, tupla i cadena.

Els dos paràmetres són obligatoris.

Tornar

Retorna el mateix que retorna la funció.

Vegem alguns exemples de la funció filter() per entendre la seva funcionalitat.

Funció Python filter() Exemple 1

Aquest exemple senzill retorna valors superiors a 5 mitjançant la funció de filtre. Vegeu l'exemple següent.

Codi

 # Python filter() function example def filterdata(x): if x>5: return x # Calling function result = filter(filterdata,(1,2,6)) # Displaying result print(list(result)) 

Sortida:

[6] 

El codi defineix una funció anomenada filterdata que pren un sol argument x. En aquesta funció, comprovem assumint que x és més gran que 5, i sempre que això sigui cert, imprimim x. Aleshores, anomenem la funció filter(), passant les dades del filtre com a argument principal i una tupla (1, 2, 6) com a argument posterior. La funció filter() aplica la funció filterdata() a cada element de la tupla i retorna un iterador que conté només els elements que compleixen la condició x > 5. Finalment, convertim l'iterador en una llista utilitzant la funció list() i imprimeix el resultat.

A continuació es mostren un parell d'exemples addicionals de com utilitzar el mètode filter() a Python:

Exemple 2:

Filtra les cadenes buides d'una llista:

Codi

 # Python filter() function example strings = [ '', 'hello', '', 'world', '' ] # Using filter() to remove empty strings from the list result = list(filter(lambda x: x != '', strings)) # Printing the result print(result) 

Sortida:

 [ 'hello', 'world' ] 

En aquest exemple, la funció lambda comprova en el cas que cada cadena no estigui buida provant-ho assumint que és equivalent a la cadena buida (''). La funció filter() retorna un altre iterable que conté només les cadenes no buides.

Exemple 3:

Filtra els nombres negatius d'una llista:

Codi

 # Python filter() function example numbers = [ 1, -2, 3, -4, 5, -6 ] # Using filter() to remove negative numbers from the list result = list(filter(lambda x: x >= 0, numbers)) # Printing the result print(result) 

Sortida:

 [1, 3, 5] 

En aquest exemple, la funció lambda comprova assumint que cada número no és negatiu provant en el cas que sigui més destacat o equivalent a zero (0). La funció filter() retorna un altre iterable que conté només els nombres no negatius.

Exemple 4:

Filtra els duplicats d'una llista:

Codi

 # Python filter() function example numbers = [ 1, 2, 3, 2, 4, 3, 5 ] # Using filter() to remove duplicate numbers from the list result = list(filter(lambda x: numbers.count(x) == 1, numbers)) # Printing the result print(result) 

Sortida:

 [ 1, 4, 5 ] 

En aquest exemple, la funció lambda comprova si cada número apareix només una vegada a la llista de números comptant la freqüència amb què apareix (numbers.count(x)) i provant en el cas que el recompte sigui equivalent a 1. La funció filter() retorna un altre iterable que conté només els números únics.

Nota: és significatiu que a Python 3, la funció filter() retorni un iterable, i això implica que realment voleu canviar-lo completament a una llista (com es mostra als exemples anteriors) per implicar-lo com a llista. No obstant això, a Python 2, la funció filter() retorna una llista, és clar.

Conclusió:

Finalment, la funció filter() és una eina poderosa per a la manipulació de dades a Python. En filtrar un iterable en funció d'una condició predefinida, podeu separar de manera ràpida i eficaç les dades que realment voleu. També podeu utilitzar filter() en combinació amb altres funcions de Python per realitzar manipulacions de dades més perplexes.