Python中的filter函数和应用
Python中的filter()函数是用于过滤序列的函数,其功能是通过设定函数的逻辑,过滤出符合条件的元素所构成的新序列。注意,过滤函数返回值必须为BOOL值(True或False),True代表函数条件成立,False代表函数条件不成立。下面我们将详细介绍filter()函数及其应用。
使用方法
filter()函数的格式如下:
filter(function,iterable)
其中function是判断函数,iterable是可迭代对象,可以是序列、元组、列表等,返回一个迭代器对象。function可以自定义,也可以使用Python内置函数。
其中,function()函数为自定义函数,实现对iterable序列的筛选,过滤出符合条件的元素。示例:
def odd_num(n):
return n % 2 == 1
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9]
res = filter(odd_num, lst)
print(list(res))
输出结果:
[1, 3, 5, 7, 9]
使用Python内置函数(lambda)方式:
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9]
res = filter(lambda x: x % 2 == 1, lst)
print(list(res))
输出结果:
[1, 3, 5, 7, 9]
应用场景
1.过滤序列中的偶数或奇数
如上所示,经过过滤函数,我们可以快速筛选出一个序列中所有的奇数或者偶数元素,过滤函数可以自由定义,具有很高的灵活性。
2.过滤序列中的空元素或空白字符
示例:
lst = ["Hello", "World", "", "Bye", " ", " ", "Python"]
res = filter(None, lst)
print(list(res))
输出结果:
["Hello", "World", "Bye", "Python"]
3.过滤序列中长度小于3的元素
lst = ["Hello", "World", "Bye", "ss", "Python", "In"]
res = filter(lambda x: len(x) >=3, lst)
print(list(res))
输出结果:
["Hello", "World", "Bye", "Python"]
4.过滤序列中重复的元素
lst = [1,2,3,3,4,5,5,6,6,6]
res = filter(lambda x: lst.count(x) == 1, lst)
print(list(res))
输出结果:
[1,2,4]
5.判断是否为空
lst = [1, 2, 3, " "]
res = filter(None, lst)
print(list(res))
输出结果:
[1,2,3]
总结
filter()函数的用途非常广泛,可以随意自定义判断函数,实现用户所需的过滤条件,非常灵活。同时,filter()函数的处理结果可以直接转化成列表、元组等指定数据类型,便于后续程序的使用和维护。
