Python内置函数filter()的用法和案例
Python中的filter()函数是一个内置函数,它用来过滤序列中的元素,根据指定的条件来筛选数据。它的基本语法格式为:
filter(function, iterable)
其中,function是一个对每一个元素都进行测试的函数,iterable是一个可以迭代的序列,如字符串、列表或元组。它返回一个新的迭代器对象,该对象中的元素为iterable中符合条件的元素。
下面给出几个filter()函数的常见应用。
1. 过滤列表中的偶数
我们可以利用filter()函数来过滤列表中的元素,例如,下面的Python代码用filter()函数来过滤列表中的偶数:
nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] even_nums = list(filter(lambda x: x % 2 == 0, nums)) print(even_nums)
执行该段代码,我们会得到输出:
[2, 4, 6, 8, 10]
在这个例子中,我们首先定义了一个列表nums,包含了从1到10的整数。然后我们定义了一个lambda函数,该函数用来测试nums中的每个元素,并返回该元素是否为偶数。最后,我们使用filter()函数来过滤掉nums中所有不是偶数的元素,并将过滤后的值存入even_nums列表中。
2. 过滤出字符串中的元音字母
我们也可以使用filter()函数来过滤字符串中的元音字母,例如:
string = "Hello, world!" vowels = list(filter(lambda x: x in "aeiouAEIOU", string)) print(vowels)
运行该段代码,我们会得到输出:
['e', 'o', 'o']
在这个例子中,我们定义了一个字符串string,该字符串中包含了一些元音字母和一些其他字符。然后,我们定义了一个lambda函数,该函数用来测试string中的每个字符,并返回该字符是否为元音字母。最后,我们使用filter()函数来过滤掉string中所有不是元音字母的字符,并将过滤后的值存入vowels列表中。
3. 过滤掉序列中的空值
我们也可以利用filter()函数来去除序列中的空值,例如:
seq = ['foo', '', 'bar', None, 'spam'] non_empty = list(filter(lambda x: x != "" and x != None, seq)) print(non_empty)
执行该段代码,我们会得到输出:
['foo', 'bar', 'spam']
在这个例子中,我们首先定义了一个序列seq,其中包含了一些字符串和空值。然后,我们定义了一个lambda函数,该函数用来测试seq中的每个元素,并返回该元素是否为空值。最后,我们使用filter()函数来过滤掉seq中所有的空值,并将过滤后的值存入non_empty列表中。
总结
以上就是Python内置函数filter()的用法和案例,我们可以利用filter()函数来过滤序列中的元素,根据指定的条件来筛选数据。我们可以将filter()函数用于列表、字符串、元组等序列类型的数据结构,在实际的程序开发中也可以多加应用。
