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

Python中filter()函数的基本使用和常见应用实例

发布时间:2023-09-16 21:02:43

filter()函数是Python内置的一个高阶函数。它接收两个参数, 个参数是一个函数,第二个参数是一个可迭代对象,如列表、元组、字典等。它的作用是根据函数的返回值,过滤出符合条件的元素,返回一个迭代器。

filter()函数的基本使用形式如下:

filter(function, iterable)

其中,function是一个函数,它接收一个参数,并返回一个Boolean值。iterable是一个可迭代对象,可以是列表、元组、字典等。filter()函数会依次将iterable中的元素传入function中,对每个元素进行判断,将返回值为True的元素留下来。

下面是一些常见的filter()函数的应用实例:

1. 过滤出偶数:

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

这个例子中,lambda函数接收一个参数x,判断x是否能被2整除。如果能被2整除,则返回True,否则返回False。filter()函数根据lambda函数的返回值,过滤出nums中的偶数。

2. 过滤出大于等于0的数:

nums = [-1, 2, -3, 4, -5, 6]
positive_nums = list(filter(lambda x: x >= 0, nums))
print(positive_nums)  # [2, 4, 6]

这个例子中,lambda函数接收一个参数x,判断x是否大于等于0。filter()函数根据lambda函数的返回值,过滤出nums中大于等于0的数。

3. 过滤出字符串中的数字:

strings = ['Hello', 'World', '123', 'Python']
nums_in_strings = list(filter(lambda x: x.isdigit(), strings))
print(nums_in_strings)  # ['123']

这个例子中,lambda函数接收一个参数x,判断x是否为数字。isdigit()是字符串的一个方法,用于判断字符串是否全由数字组成。filter()函数根据lambda函数的返回值,过滤出strings中的字符串中的数字。

4. 过滤出字典中值大于等于90的项:

scores = {'Math': 80, 'English': 90, 'Science': 95, 'History': 85}
high_scores = dict(filter(lambda x: x[1] >= 90, scores.items()))
print(high_scores)  # {'English': 90, 'Science': 95}

这个例子中,lambda函数接收一个键值对x,判断x的值是否大于等于90。filter()函数根据lambda函数的返回值,过滤出scores中值大于等于90的键值对,并构造一个新的字典。

总结:filter()函数可以根据自定义的函数对可迭代对象进行过滤,返回一个通过过滤条件的新的迭代器或容器。它常用于过滤出符合条件的元素,进行条件筛选和数据处理。