Pythonova ugrađena funkcija filter() također je moćna; za izvođenje postupka filtriranja podataka na nizovima kao što su popisi, torke i nizovi. Funkcija filter() koristi se za primjenu funkcije na svaki element iterabla (poput popisa ili torke) i vraćanje drugog iterabla koji sadrži samo elemente za koje funkcija vraća True. U tom smislu, filter() nam dopušta filtriranje elemenata iz grupiranja na temelju nekog uvjeta. Prvi argument može biti None ako funkcija nije dostupna i vraća samo elemente koji su True.
Sintaksa:
filter (function, iterable)
Parametri
funkcija: To je funkcija. Ako je postavljeno na None, vraća samo elemente koji su True.
Iterable: Bilo koji niz koji se može ponavljati kao što je popis, tuple i niz.
Oba parametra su obavezna.
Povratak
Vraća isto što i funkcija.
Pogledajmo neke primjere funkcije filter() da bismo razumjeli njezinu funkcionalnost.
Primjer 1. funkcije Python filter().
Ovaj jednostavan primjer vraća vrijednosti veće od 5 pomoću funkcije filtra. Pogledajte donji primjer.
Kodirati
# 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))
Izlaz:
[6]
Kod definira funkciju pod nazivom filterdata koja uzima jedan argument x. U ovoj funkciji provjeravamo pod pretpostavkom da je x veći od 5, i pod uvjetom da je to točno, ispisujemo x. Zatim pozivamo funkciju filter(), prosljeđujući filterdata kao glavni argument i torku (1, 2, 6) kao sljedeći argument. Funkcija filter() primjenjuje funkciju filterdata() na svaki element torke i vraća iterator koji sadrži samo elemente koji ispunjavaju uvjet x > 5. Na kraju pretvaramo iterator u popis pomoću funkcije list(). i ispisati rezultat.
Slijedi nekoliko dodatnih primjera kako koristiti metodu filter() u Pythonu:
Primjer 2:
Filtrirajte prazne nizove s popisa:
Kodirati
# 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)
Izlaz:
[ 'hello', 'world' ]
U ovom primjeru, lambda funkcija provjerava u slučaju da svaki niz nije prazan testiranjem pod pretpostavkom da je ekvivalentan praznom nizu (''). Funkcija filter() vraća još jedan iterable koji sadrži samo neprazne nizove.
Primjer 3:
Filtrirajte negativne brojeve s popisa:
Kodirati
# 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)
Izlaz:
[1, 3, 5]
U ovom primjeru, lambda funkcija provjerava pod pretpostavkom da svaki broj nije negativan testiranjem u slučaju da je istaknutiji od nule (0) ili jednak njoj. Funkcija filter() vraća još jedan iterable koji sadrži samo nenegativne brojeve.
Primjer 4:
Filtrirajte duplikate s popisa:
Kodirati
# 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)
Izlaz:
[ 1, 4, 5 ]
U ovom primjeru, lambda funkcija provjerava u slučaju da se svaki broj pojavi samo jednom na popisu brojeva brojanjem koliko se često pojavljuje (numbers.count(x)) i testiranjem u slučaju da je broj ekvivalentan 1. Funkcija filter() vraća još jedan iterable koji sadrži samo jedinstvene brojeve.
Napomena: značajno je da u Pythonu 3 funkcija filter() vraća iterable, a to implicira da ga stvarno želite potpuno promijeniti u popis (kao što je prikazano u gornjim primjerima) da biste ga uključili kao popis. Bez obzira na to, u Pythonu 2 funkcija filter() naravno vraća popis.
Zaključak:
Konačno, funkcija filter() moćan je alat za manipulaciju podacima u Pythonu. Filtriranjem iterable na temelju unaprijed definiranog uvjeta, možete brzo i učinkovito odvojiti podatke koje stvarno želite. Možete također koristiti filter() u kombinaciji s drugim Python funkcijama za izvođenje zbunjujućih manipulacija podacima.