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

filter函数在Python中的用法详解

发布时间:2023-06-10 09:30:54

Filter函数是Python内置函数之一,用于对可迭代对象(列表、元组、集合、字典等)进行筛选,返回一个新的可迭代对象,其中包含了所有符合指定条件的元素。

filter()函数的用法为:filter(function, iterable)

其中,function代表要筛选的函数,可以是自定义函数或者匿名函数,iterable代表要进行筛选的可迭代对象。

如果function为None,则默认返回iterable中所有值为True的元素。如果iterable为空,返回一个空迭代器。

例如,求一个列表中所有偶数的结果可以使用如下代码:

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = list(filter(lambda x: x%2 == 0, numbers))
print(even_numbers)

输出结果为:

[2, 4, 6, 8, 10]

使用filter()函数,可以实现很多常用的筛选操作。下面列举了一些常见的用法:

1. 筛选出所有奇数

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
odd_numbers = list(filter(lambda x: x%2 == 1, numbers))
print(odd_numbers)

输出结果为:

[1, 3, 5, 7, 9]

2. 筛选出所有大于5的数

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
big_numbers = list(filter(lambda x: x > 5, numbers))
print(big_numbers)

输出结果为:

[6, 7, 8, 9, 10]

3. 筛选出所有小写字母

letters = ['A', 'b', 'C', 'd', 'E', 'f', 'G']
lower_letters = list(filter(lambda x: x.islower(), letters))
print(lower_letters)

输出结果为:

['b', 'd', 'f']

4. 筛选出所有包含a字符的字符串

words = ['apple', 'banana', 'orange', 'pear', 'grape']
a_words = list(filter(lambda x: 'a' in x, words))
print(a_words)

输出结果为:

['apple', 'banana', 'grape']

5. 筛选出所有不为空的字符串

words = ['apple', '', 'banana', '', 'orange', 'pear', 'grape', '']
non_empty_words = list(filter(lambda x: bool(x), words))
print(non_empty_words)

输出结果为:

['apple', 'banana', 'orange', 'pear', 'grape']

总之,filter()函数是一个非常方便的函数,在对可迭代对象进行筛选的时候可以省去手动实现的麻烦过程。同时,使用lambda表达式可以使得代码变得简洁易读。