Pythonfilter函数详解及用例介绍
发布时间:2023-07-04 14:31:23
filter()函数是Python中的内置函数之一,其功能是过滤序列中的元素,返回一个符合条件的新序列。
filter()函数的语法如下:
filter(function, iterable)
其中,function是过滤函数,用于判断iterable中的元素是否符合条件,只有返回True的元素才会被保留;iterable是一个序列对象,可以是列表、元组、字典、字符串等。
下面是一个简单的示例,filter函数将过滤出列表x中所有的奇数:
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
def is_odd(n):
return n % 2 == 1
result = filter(is_odd, x)
print(list(result))
运行结果为:[1, 3, 5, 7, 9]
可以看到,函数is_odd用于判断一个数字是否为奇数,通过filter()函数将列表x中的所有奇数过滤出来并返回一个新列表。
除了使用自定义函数外,还可以使用lambda函数作为参数传递给filter()函数,达到同样的效果。上面的例子可以修改为如下形式:
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] result = filter(lambda n: n % 2 == 1, x) print(list(result))
运行结果相同。
另外,filter函数的第一个参数也可以传递None,那么过滤条件就变成了判断iterable中的元素是否为真(即非0、非空、非None),只有真值才会被保留。例如:
x = [0, False, None, 1, 2, 3, 4, 5] result = filter(None, x) print(list(result))
运行结果为:[1, 2, 3, 4, 5]
从结果可以看出,列表x中的0、False和None被过滤掉了。
filter()函数的返回值是一个可迭代对象,可以通过list()函数将其转换为列表。
除了上述的示例外,filter()函数还可以应用于更加复杂的操作,比如过滤出长度大于等于5的字符串,过滤出字典中值超过100的键等等。根据具体需求,只需要编写相应的过滤函数即可。
总结一下,filter()函数是一个非常实用的函数,可以在对序列进行过滤操作时非常方便地使用。通过定义过滤函数或使用lambda函数,可以灵活地实现对序列中元素的筛选,使得代码更加简洁、高效。
