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

Python中的filter函数和应用

发布时间:2023-06-15 06:11:39

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()函数的处理结果可以直接转化成列表、元组等指定数据类型,便于后续程序的使用和维护。