filter函数:Python中filter函数的作用与使用示例
1. filter函数的作用
Python中的filter函数是内置函数之一,能够根据自定义条件对一个序列进行过滤,返回符合条件的新序列。
filter函数的语法格式如下:
filter(function, iterable)
其中,function是过滤条件函数,iterable是需要过滤的序列。
具体来说,filter函数在遍历iterable时,会依次将每一个元素传递给function函数,只有满足function函数中定义的条件,才会将该元素添加到新序列中。
2. 使用示例
为了更好地理解filter函数,下面将举几个使用示例:
(1)过滤出偶数序列
以下代码可以过滤出1-9中的偶数个数字,并返回新的序列。
original_sequence = [1, 2, 3, 4, 5, 6, 7, 8, 9] result_sequence = filter(lambda x: x % 2 == 0, original_sequence) print(list(result_sequence))
输出结果为:[2, 4 ,6 ,8]
这里使用了lambda匿名函数来定义过滤条件,即判断一个数是否为偶数。
(2)过滤出长度大于3的字符串
以下代码可以过滤出字符串长度大于3的所有字符串,并返回新的序列。
original_sequence = ['apple', 'banana', 'orange', 'car', 'dog'] result_sequence = filter(lambda x: len(x) > 3, original_sequence) print(list(result_sequence))
输出结果为:['apple', 'banana', 'orange']
这里使用了lambda匿名函数来定义过滤条件,即判断一个字符串的长度是否大于3。
(3)过滤出所有为真的元素
以下代码可以过滤出序列里所有为真的元素,即非0、非None、非空字符串。
original_sequence = [1, 0, 'hello', None, 'world'] result_sequence = filter(None, original_sequence) print(list(result_sequence))
输出结果为:[1, 'hello', 'world']
这里的 个参数为None,表明过滤条件直接为x本身,函数会自动判断该元素是否为真。
(4)使用filter函数实现过滤器
以下代码使用filter函数来实现一个简单的过滤器,将序列中的数字过滤出来。
def is_number(x):
try:
float(x)
return True
except ValueError:
return False
original_sequence = ['a', 1, 'b', 2, 'c', 3]
result_sequence = filter(is_number, original_sequence)
print(list(result_sequence))
输出结果为:[1, 2, 3]
这里定义了一个is_number函数,通过try-except代码块来判断元素是否为数字。然后使用该函数作为filter函数的过滤条件。
总的来说,filter函数非常灵活,可以根据自定义条件,过滤出符合要求的序列元素。可以大大简化编程工作,提高代码的可读性。
