Python中的filter()函数用法及示例
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表达式作为参数,用于判断序列中的元素是否应该被保留。同时,它可以用于对不同类型的序列进行过滤,具有很高的灵活性和实用性。
