Metode filter () konstruē iteratoru no iterējama elementa, kuram funkcija atgriež true.
Vienkāršiem vārdiem, filter()
metode filtrē doto iterējamo ar funkcijas palīdzību, kas pārbauda katru iterējamo elementu patiesumu vai nē.
Metodes sintakse filter()
ir:
filtrs (funkcija, iterējama)
filtrs () Parametri
filter()
metode prasa divus parametrus:
- function - funkcija, kas pārbauda, vai iterējamo elementu atgriešanās ir patiesa vai nepatiesa.
Ja nav, funkcija pēc noklusējuma ir funkcija Identity - kas atgriež false, ja kādi elementi ir nepatiesi - iterējams - iterējams, kas jāfiltrē, var būt visu iteratoru kopas, saraksti, kopas vai konteineri
Atgriezeniskā vērtība no filtra ()
filter()
metode atgriež iteratoru, kas izturēja katra iterējamā elementa funkciju pārbaudi.
filter()
metode ir līdzvērtīga:
# kad funkcija ir definēta (iterējama elementa elements, ja funkcija (elements)) # kad funkcija nav (elementa iterējams elements elements, ja elements)
1. piemērs: Kā filtrs () darbojas atkārtojamā sarakstā?
# 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)
Rezultāts
Filtrētie patskaņi ir: aeio
Šeit mums ir burtu saraksts, un mums ir jāfiltrē tikai tajā esošie patskaņi.
Mēs varētu izmantot for for loop, lai apietu katru burtu saraksta elementu un saglabātu to citā sarakstā, taču Python šis process ir vienkāršāks un ātrāks, izmantojot filter()
metodi.
Mums ir funkcija, filterVowels
kas pārbauda, vai burts ir patskaņs. Šī funkcija tiek nodota filter()
metodei ar burtu sarakstu.
filter()
metodi tad katru burtu nodod filterVowels()
metodei, lai pārbaudītu, vai tā atgriež patiesu vai nē. Galu galā tas rada iteratoru no tiem, kas atgriežas patiesā (patskaņi).
Tā kā iterators pats neglabā vērtības, mēs to caurskatām un pēc kārtas izdrukājam patskaņus.
2. piemērs: Kā filtra () metode darbojas bez filtra funkcijas?
# random list randomList = (1, 'a', 0, False, True, '0') filteredList = filter(None, randomList) print('The filtered elements are:') for element in filteredList: print(element)
Rezultāts
Filtrētie elementi ir: 1 a True 0
Šeit mums ir nejaušs skaitļu, virkņu un loģisko vērtību saraksts randomList.
Mēs nododam randomList filter()
metodei ar pirmo parametru (filtra funkciju) kā None.
Ja filtra funkcija ir None, funkcija pēc noklusējuma ir Identity funkcija, un katrs randomList elements tiek pārbaudīts, vai tā ir taisnība vai nē.
Apskatot galīgo filtrēto sarakstu, mēs iegūstam patiesus elementus: 1, a, True and '0'
(Arī “0” kā virkne ir taisnība).