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表达式可以使得代码变得简洁易读。
