欢迎访问宙启技术站
智能推送

Python内置函数filter()的用法和案例

发布时间:2023-06-23 17:11:45

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()函数用于列表、字符串、元组等序列类型的数据结构,在实际的程序开发中也可以多加应用。