Metoda filter () izrađuje iterator od elemenata iterablea za koje funkcija vraća true.
Jednostavnim riječima, filter()
metoda filtrira zadani iterable uz pomoć funkcije koja testira da li je svaki element u iteralu istinit ili ne.
Sintaksa filter()
metode je:
filtar (funkcija, iterable)
filter () Parametri
filter()
metoda uzima dva parametra:
- function - funkcija koja testira vraćaju li elementi iterabilnog true ili false.
Ako None, funkcija po defaultu ima funkciju Identity - koja vraća false ako su neki elementi lažni - iterable - iterable koji se filtrira, mogu biti skupovi, popisi, korice ili spremnici bilo kojeg iteratora
Vrati vrijednost iz filtra ()
filter()
metoda vraća iterator koji je prošao provjeru funkcije za svaki element u iterableu.
filter()
metoda je ekvivalentna:
# kada je funkcija definirana (element za element u iterableu ako je funkcija (element)) # kada je funkcija None (element za element u iterable if elementu)
Primjer 1: Kako filter () radi za popis koji se može iterati?
# list of letters letters = ('a', 'b', 'd', 'e', 'i', 'j', 'o') # function that filters vowels def filterVowels(letter): vowels = ('a', 'e', 'i', 'o', 'u') if(letter in vowels): return True else: return False filteredVowels = filter(filterVowels, letters) print('The filtered vowels are:') for vowel in filteredVowels: print(vowel)
Izlaz
Filtrirani samoglasnici su: aeio
Ovdje imamo popis slova i moramo filtrirati samo samoglasnike u njemu.
Petlju for mogli bismo koristiti za petlju kroz svaki element na popisu slova i pohranu na drugi popis, ali u Pythonu je ovaj postupak lakši i brži pomoću filter()
metode.
Imamo funkciju filterVowels
koja provjerava je li slovo samoglasnik ili ne. Ova se funkcija prenosi na filter()
metodu s popisom slova.
filter()
metoda zatim prosljeđuje svako slovo filterVowels()
metodi da provjeri vraća li istinito ili ne. Na kraju stvara iterator onih koji vraćaju true (samoglasnici).
Budući da iterator ne pohranjuje same vrijednosti, mi ga petljamo i ispisujemo samoglasnike jedan po jedan.
Primjer 2: Kako metoda filter () radi bez funkcije filtra?
# random list randomList = (1, 'a', 0, False, True, '0') filteredList = filter(None, randomList) print('The filtered elements are:') for element in filteredList: print(element)
Izlaz
Filtrirani elementi su: 1 a True 0
Ovdje imamo slučajni popis brojeva, niza i logičkih vrijednosti u randomList.
Slučajni popis prosljeđujemo filter()
metodi s prvim parametrom (funkcija filtra) kao None.
S funkcijom filtra kao None, funkcija zadaje funkciju Identity, a svaki element u randomList provjerava je li istinit ili ne.
Kada prolazimo kroz konačni filteredList, dobivamo elemente koji su istiniti: 1, a, True and '0'
('0' jer je niz također istinit).