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

Python中的filter()函数用法及示例

发布时间:2023-05-20 16:37:41

Python中的filter()函数是Python内置的一个高级函数,它用来过滤序列,返回一个满足条件的元素。

filter()函数接受两个参数, 个参数为函数,第二个参数为序列。函数的作用是对序列的每个元素进行判断,返回True或False,True则保留这个元素,False则删除这个元素。

下面是filter()函数的基本语法:

filter(function, iterable)

其中,function代表一个函数,iterable代表一个序列,可以是列表、元组、集合等。

函数function必须返回True或False,用于判断元素是否应该被保留。

filter()函数会返回一个迭代器,包含满足条件的元素。

下面是filter()函数的一个简单示例:

def is_even(n):
    return n % 2 == 0
    
nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_nums = filter(is_even, nums)

print(list(even_nums))

运行结果:

[2, 4, 6, 8, 10]

上面的示例中,is_even()函数用于判断一个数是否为偶数。

filter()函数使用is_even()函数对nums列表中每个元素进行判断,保留偶数元素,返回一个迭代器。

最后将迭代器转换成一个列表,并打印出结果。

除了使用单独的函数来进行判断,filter()函数还可以使用lambda表达式来完成。

下面是一个使用lambda表达式来过滤列表元素的示例:

nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
odd_nums = filter(lambda x: x % 2 != 0, nums)

print(list(odd_nums))

运行结果:

[1, 3, 5, 7, 9]

上面的示例中,使用了lambda表达式来表示一个匿名函数,用于判断一个数是否为奇数。

filter()函数使用lambda表达式对nums列表中每个元素进行判断,保留奇数元素,返回一个迭代器。

最后将迭代器转换成一个列表,并打印出结果。

除了列表外,filter()函数也可以用于对其他类型的序列进行过滤,例如元组、集合等。

下面是一个使用filter()函数对一个集合进行过滤的示例:

words = {'apple', 'banana', 'cherry', 'durian', 'elderberry'}
result = filter(lambda x: 'e' in x, words)

print(set(result))

运行结果:

{'elderberry', 'cherry', 'apple'}

上面的示例中,对一个集合words进行过滤,保留包含字母'e'的元素。

最后将迭代器转换成一个集合,并打印出结果。

总结一下,filter()函数是Python内置的一个强大的函数,用于对序列进行过滤,非常实用。它可以接受一个函数或lambda表达式作为参数,用于判断序列中的元素是否应该被保留。同时,它可以用于对不同类型的序列进行过滤,具有很高的灵活性和实用性。