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

filter函数:Python中filter函数的作用与使用示例

发布时间:2023-05-22 20:22:35

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函数非常灵活,可以根据自定义条件,过滤出符合要求的序列元素。可以大大简化编程工作,提高代码的可读性。