filter()方法从可迭代对象的元素构造一个迭代器,函数将为其返回true。
简单来说,filter()方法在一个函数的帮助下过滤给定的iterable,该函数测试iterable中的每个元素是否为真。
filter()方法的语法为:
filter(function, iterable)
filter()方法采用两个参数:
function-
测试iterable的元素返回true还是false的函数,如果为None,则该函数默认为Identity函数-如果任何元素为false,则返回false
filter()方法返回一个迭代器,该迭代器为iterable中的每个元素传递函数检查。
filter()方法等效于:
# 当函数被定义时 (element for element in iterable if function(element)) # 当函数为空时 (element for element in iterable if element)
# 按字母顺序排列的列表 alphabets = ['a', 'b', 'd', 'e', 'i', 'j', 'o'] # 过滤元音的函数 def filterVowels(alphabet): vowels = ['a', 'e', 'i', 'o', 'u'] if(alphabet in vowels): return True else: return False filteredVowels = filter(filterVowels, alphabets) print('过滤后的元音是:') for vowel in filteredVowels: print(vowel)
运行该程序时,输出为:
过滤后的元音是: a e i o
在这里,我们列出了一个字母列表,只需要过滤掉其中的元音即可。
我们可以使用for循环遍历alphabets列表中的每个元素,并将其存储在另一个列表中,但是在Python中,使用filter()方法可以使此过程变得更加轻松快捷。
我们有一个filterVowels检查字母是否为元音的函数。该函数与字母列表一起传递给filter()方法。
然后,filter()方法将每个字母传递给filterVowels()方法以检查其是否返回true。最后,它创建返回true(元音)的迭代器。
由于迭代器本身并不存储值,因此我们遍历它并逐一打印出元音。
# 随机列表 randomList = [1, 'a', 0, False, True, '0'] filteredList = filter(None, randomList) print('过滤后的元素是:') for element in filteredList: print(element)
运行该程序时,输出为:
过滤后的元素是: 1 a True 0
在这里,randomList是一个由数字,字符串和布尔值组成的随机列表。
我们将randomList传递给filter()第一个参数(过滤器函数)为None的方法。
将filter函数设置为None时,该函数默认为Identity函数,并且检查randomList中的每个元素是否为true。
当我们遍历最终的filterList时,我们得到的元素为true :(1, a, True 和 '0'作为字符串,所以'0'也为true)。