Metoda filter () tworzy iterator z elementów iterowalnej, dla której funkcja zwraca wartość true.
W prostych słowach filter()
metoda filtruje daną iterowalność za pomocą funkcji, która sprawdza, czy każdy element w iterowalnym jest prawdziwy lub nie.
Składnia filter()
metody to:
filtr (funkcja, iterowalna)
filter () Parametry
filter()
metoda przyjmuje dwa parametry:
- function - funkcja, która sprawdza, czy elementy iterowalnego zwracają true czy false
Jeśli None, funkcja domyślnie zwraca wartość Identity function - która zwraca false, jeśli którykolwiek element jest false - iterowalny - iterowalny, który ma być filtrowany, może być zestawami, listami, krotkami lub kontenerami dowolnych iteratorów
Wartość zwracana z filtra ()
filter()
zwraca iterator, który przeszedł kontrolę funkcji dla każdego elementu w iterowalnej.
filter()
metoda jest równoważna z:
# gdy funkcja jest zdefiniowana (element dla elementu w iterowalnym if function (element)) # gdy funkcja ma wartość None (element dla elementu w iterowalnym elemencie if)
Przykład 1: Jak działa filter () dla listy iterowalnej?
# 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)
Wynik
Filtrowane samogłoski to: aeio
Tutaj mamy listę liter i musimy odfiltrować tylko zawarte w niej samogłoski.
Moglibyśmy użyć pętli for, aby przejść przez każdy element z listy liter i zapisać go na innej liście, ale w Pythonie ten proces jest łatwiejszy i szybszy przy użyciu filter()
metody.
Mamy funkcję, filterVowels
która sprawdza, czy litera jest samogłoską, czy nie. Ta funkcja jest przekazywana do filter()
metody z listą liter.
filter()
następnie przekazuje każdą literę do filterVowels()
metody, aby sprawdzić, czy zwraca prawdę, czy nie. W końcu tworzy iterator tych, które zwracają prawdę (samogłoski).
Ponieważ iterator nie przechowuje samych wartości, przechodzimy przez niego w pętli i drukujemy samogłoski jedna po drugiej.
Przykład 2: Jak działa metoda filter () bez funkcji filter?
# random list randomList = (1, 'a', 0, False, True, '0') filteredList = filter(None, randomList) print('The filtered elements are:') for element in filteredList: print(element)
Wynik
Filtrowane elementy to: 1 a True 0
Tutaj mamy losową listę liczb, ciąg i wartość logiczną w randomList.
Przekazujemy randomList do filter()
metody z pierwszym parametrem (funkcją filtru) jako None.
Gdy funkcja filtru jest ustawiona na Brak, funkcja domyślnie przyjmuje funkcję Identity, a każdy element w randomList jest sprawdzany, czy jest prawdziwy, czy nie.
Kiedy przechodzimy przez pętlę przez końcową filterList, otrzymujemy elementy, które są prawdziwe: 1, a, True and '0'
(„0” jako łańcuch również jest prawdziwe).