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

如何使用Python中的filter()函数进行条件筛选?

发布时间:2023-06-12 14:36:30

Python中的filter()函数是一个内置的高阶函数,它可以从一个可迭代的对象中过滤出满足指定条件的元素。简单来说,就是通过一个函数对一个序列进行过滤,将符合条件的元素组成一个新的序列并返回。

filter()函数的语法如下:

filter(function, iterable)

其中,function是过滤的函数,iterable是待处理的序列,可以是列表、元组、字典、集合、字符串等可迭代的对象。

下面以列表为例,演示如何使用Python中的filter()函数进行条件筛选。

首先,我们定义一个列表:

>>> lst = [1, 2, 3, 4, 5, 6, 7, 8, 9]

然后,定义一个函数,用于筛选偶数:

>>> def is_even(num):  

...     return num%2 == 0

接下来,就可以使用filter()函数进行筛选了。将列表lst和函数is_even作为参数传递给filter()函数即可。

>>> new_lst = list(filter(is_even, lst))  

>>> print(new_lst)  

[2, 4, 6, 8]

以上代码的运行结果是将lst中的元素按照函数is_even的规则进行筛选,只留下偶数元素,最终得到由2、4、6、8组成的新列表new_lst。

除了使用自定义函数作为filter()函数的 个参数,我们还可以使用匿名函数lambda作为条件筛选的函数。

例如,我们可以通过filter()函数筛选出lst中大于5的元素,代码如下:

>>> new_lst = list(filter(lambda x: x>5, lst))  

>>> print(new_lst)  

[6, 7, 8, 9]

以上代码将lst中大于5的元素筛选出来,最终得到由6、7、8、9组成的新列表new_lst。

需要注意的是,filter()函数返回的是一个迭代器,我们需要将其转换为列表才能打印出来。

除了对列表进行条件筛选,filter()函数还可以对其他类型的可迭代对象进行筛选,例如:

筛选元组中大于零的元素:

>>> tup = (1, -2, 3, -4, 5, -6, 7, -8, 9)  

>>> new_tup = tuple(filter(lambda x: x>0, tup))  

>>> print(new_tup)  

(1, 3, 5, 7, 9)

筛选字典中key为偶数的元素:

>>> dct = {1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e'}  

>>> new_dct = dict(filter(lambda x: x[0]%2==0, dct.items()))  

>>> print(new_dct)  

{2: 'b', 4: 'd'}

筛选字符串中的小写字母:

>>> s = 'Hello World'  

>>> new_s = ''.join(filter(str.islower, s))  

>>> print(new_s)  

elloorld

总之,filter()函数可以帮助我们快速、方便地对可迭代对象进行条件筛选,非常实用。