Pythonova vgrajena funkcija filter() je prav tako zmogljiva; za izvajanje postopka filtriranja podatkov na zaporedjih, kot so seznami, tuple in nizi. Funkcija filter() se uporablja za uporabo funkcije za vsak element iterable (na primer seznama ali tuple) in vrnitev druge iterable, ki vsebuje samo elemente, za katere funkcija povrne vrednost True. V tem smislu nam filter() omogoča filtriranje elementov iz skupine na podlagi nekega pogoja. Prvi argument je lahko None, če funkcija ni na voljo in vrne samo elemente, ki so True.
Sintaksa:
filter (function, iterable)
Parametri
funkcija: To je funkcija. Če je nastavljeno na Brez, vrne samo elemente, ki so True.
Ponovljivo: Vsako zaporedje, ki ga je mogoče ponoviti, kot je seznam, tuple in niz.
Oba parametra sta obvezna.
Vrnitev
Vrne enako, kot vrne funkcija.
Oglejmo si nekaj primerov funkcije filter(), da bomo razumeli njeno funkcionalnost.
1. primer funkcije Python filter().
Ta preprost primer vrne vrednosti, višje od 5, s funkcijo filtra. Oglejte si spodnji primer.
Koda
# 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))
Izhod:
[6]
Koda definira funkcijo, imenovano filterdata, ki sprejme en argument x. V tej funkciji preverimo ob predpostavki, da je x večji od 5, in če je to res, natisnemo x. Nato pokličemo funkcijo filter(), pri čemer posredujemo filterdata kot glavni argument in torko (1, 2, 6) kot naslednji argument. Funkcija filter() uporabi funkcijo filterdata() za vsak element tuple in vrne iterator, ki vsebuje samo elemente, ki izpolnjujejo pogoj x > 5. Končno pretvorimo iterator v seznam z uporabo funkcije list(). in natisnite rezultat.
Sledi nekaj dodatnih primerov, kako uporabiti metodo filter() v Pythonu:
Primer 2:
Filtrirajte prazne nize s seznama:
Koda
# 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)
Izhod:
[ 'hello', 'world' ]
V tem primeru funkcija lambda preveri, ali vsak niz ni prazen, tako da preskuša ob predpostavki, da je enakovreden praznemu nizu (''). Funkcija filter() vrne še en iterable, ki vsebuje samo neprazne nize.
Primer 3:
Filtrirajte negativna števila s seznama:
Koda
# 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)
Izhod:
[1, 3, 5]
V tem primeru funkcija lambda preverja ob predpostavki, da je vsako število nenegativno, s testiranjem v primeru, da je bolj vidno kot nič (0) ali enakovredno njej. Funkcija filter() vrne še en iterable, ki vsebuje samo nenegativna števila.
Primer 4:
Filtrirajte dvojnike s seznama:
Koda
# 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)
Izhod:
[ 1, 4, 5 ]
V tem primeru funkcija lambda preveri, ali se vsako število na seznamu številk prikaže samo enkrat, tako da prešteje, kako pogosto se prikaže (numbers.count(x)) in preizkusi, ali je štetje enakovredno 1. Funkcija filter() vrne še en iterable, ki vsebuje samo edinstvena števila.
Opomba: pomembno je, da v Pythonu 3 funkcija filter() vrne iterable, kar pomeni, da ga resnično želite popolnoma spremeniti v seznam (kot je prikazano v zgornjih primerih), da ga vključite kot seznam. Kljub temu v Pythonu 2 funkcija filter() seveda vrne seznam.
Zaključek:
Končno je funkcija filter() močno orodje za obdelavo podatkov v Pythonu. S filtriranjem iterable na podlagi vnaprej določenega pogoja lahko hitro in učinkovito ločite podatke, ki jih resnično želite. Prav tako lahko uporabite filter() v mešanici z drugimi funkcijami Python za izvajanje bolj zapletenih manipulacij s podatki.