Python中filter()函数的基本使用和常见应用实例
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()函数可以根据自定义的函数对可迭代对象进行过滤,返回一个通过过滤条件的新的迭代器或容器。它常用于过滤出符合条件的元素,进行条件筛选和数据处理。
