📅  最后修改于: 2020-09-20 04:02:46             🧑  作者: Mango
简而言之, filter()
方法借助一个测试可迭代对象中每个元素是否为真的函数来过滤给定的可迭代对象。
filter()
方法的语法为:
filter(function, iterable)
filter()
方法采用两个参数:
filter()
方法返回一个迭代器,该迭代器通过了可迭代对象中每个元素的函数检查。
filter()
方法等效于:
# when function is defined
(element for element in iterable if function(element))
# when function is None
(element for element in iterable if element)
# 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)
输出
The filtered vowels are:
a
e
i
o
在这里,我们有一个字母列表,只需要过滤掉其中的元音。
我们可以使用for循环遍历letters
列表中的每个元素,并将其存储在另一个列表中,但是在Python,使用filter()
方法可以使此过程变得更加轻松快捷。
我们有一个filterVowels
函数 ,用于检查字母是否为元音。该函数与字母列表一起传递给filter()
方法。
然后, filter()
方法将每个字母传递给filterVowels()
方法以检查其是否返回true。最后,它创建返回true(元音)的迭代器。
由于迭代器本身并不存储值,因此我们遍历它并逐一打印出元音。
# random list
randomList = [1, 'a', 0, False, True, '0']
filteredList = filter(None, randomList)
print('The filtered elements are:')
for element in filteredList:
print(element)
输出
The filtered elements are:
1
a
True
0
在这里,我们在randomList
有一个数字, 字符串和布尔值的随机列表。
我们将randomList
传递给filter()
方法,第一个参数(filter 函数)为None
。
将filter 函数为None时,该函数默认为Identity 函数,并检查randomList
每个元素是否为true。
当我们遍历最终的filteredList
,我们得到的元素为true: 1, a, True and '0'
( 字符串的 '0'也为true)。