Python中filter函数的作用和用法
Python中的filter函数是一种内置函数,可用于筛选出符合特定条件的元素。它接受两个参数:一个用于筛选的函数和一个序列对象,返回一个由通过筛选函数的元素组成的迭代器。下面介绍filter函数的详细用法和特点。
一、filter函数的结构及返回值
filter函数的语法格式如下:
filter(function, iterable)
具体而言,其中,
- function:是一个用于筛选的函数,接受一个参数并返回一个布尔值True or False,用于判断参数是否符合条件;
- iterable:是一个序列对象,可以是字符串、列表、元组或任何可迭代对象。
filter函数的返回值是一个迭代器,包含通过函数筛选的元素。在Python3中,filter函数返回一个特殊类型的迭代器,名为filter,可以通过list()将其转换为列表形式。
二、使用实例
下面通过示例代码来说明filter函数的用法。
(1)筛选出列表中的偶数元素
nums = [0,1,2,3,4,5,6,7,8,9]
def filter_even_nums(num):
return num%2 == 0
even_nums = filter(filter_even_nums,nums)
print(list(even_nums))
执行结果为:
[0, 2, 4, 6, 8]
在上述示例中,首先通过定义了filter_even_nums()函数来判断参数num是否是2的倍数,然后通过filter函数和该函数作为参数来筛选出nums列表中的偶数,最后通过list()将它们输出为一个列表。
(2)筛选出列表中所有大于等于5的元素
nums = [0,1,2,3,4,5,6,7,8,9]
def filter_greater_than_5(num):
return num >= 5
greater_than_5 = filter(filter_greater_than_5,nums)
print(list(greater_than_5))
执行结果为:
[5, 6, 7, 8, 9]
以上示例中,通过定义了filter_greater_than_5()函数来判断参数num是否大于等于5,从而筛选出nums列表中符合条件的元素,并输出为一个列表。
(3)筛选长度大于5的字符串
words = ["Python","C++","Java","JavaScript","PHP"]
def filter_length_of_words(word):
return len(word) > 5
long_words = filter(filter_length_of_words,words)
print(list(long_words))
执行结果为:
['Python', 'JavaScript']
在该示例中,通过定义filter_length_of_words()函数来判断参数word的长度是否大于5,在words列表中筛选出符合条件的字符串,并输出为一个列表。
三、使用lambda函数代替函数定义
可以使用Python的lambda函数来代替上述示例中的函数定义,使代码更加简洁易读。例如,将上例中的筛选长度大于5的字符串改为:
words = ["Python","C++","Java","JavaScript","PHP"]
long_words = filter(lambda x:len(x) > 5,words)
print(list(long_words))
该示例中,使用lambda函数来代替了上文中的函数定义,从而使代码更简洁易读。
四、filter函数与列表推导式的比较
filter函数可以与列表推导式结合使用来完成相同的功能,下面对它们进行对比。
(1)使用filter函数实现列表筛选
nums = [0,1,2,3,4,5,6,7,8,9]
def filter_even_nums(num):
return num%2 == 0
even_nums = filter(filter_even_nums,nums)
print(list(even_nums))
运行结果:
[0, 2, 4, 6, 8]
(2)使用列表推导式实现列表筛选
nums = [0,1,2,3,4,5,6,7,8,9]
even_nums = [num for num in nums if num%2==0]
print(even_nums)
运行结果:
[0, 2, 4, 6, 8]
使用列表推导式的优点在于具有更高的可读性和可维护性,对于简单的列表取值操作,列表推导式可能优先考虑。而使用filter函数则更适合对函数式编程较为熟悉的开发者,他们倾向于使用抽象化的函数,从而使代码更简洁易读。
五、总结
filter函数是Python编程中常用的函数之一,用于筛选出符合指定条件的元素。它的使用方法相对简单,只需传入筛选函数和一个可迭代对象即可实现元素筛选。与列表推导式结合使用更是可以带来更高的可读性和可维护性。在编写Python代码时,开发者根据具体情况选择适合的使用方法,可以使代码简洁易读且具有高效性。
