Python中如何使用filter()函数筛选列表元素
Python中内置的filter()函数是一种用于筛选序列中元素的高阶函数,可通过传入一个函数和一个序列作为参数,对序列中的每个元素进行筛选,将符合条件的元素组成新的序列返回。
filter()函数的使用方法如下:
filter(function, sequence)
其中,function是用于筛选序列元素的函数,其返回值为True或False,sequence是需要被筛选的序列,返回值为一个新的序列,包含所有满足条件的元素。
下面通过一个示例演示如何使用filter()函数筛选列表元素:
例1:筛选列表中的偶数
我们先定义一个函数is_even(),判断一个数是否为偶数:
def is_even(n):
return n % 2 == 0
然后我们定义一个列表numbers存放一组整数,我们想要筛选其中的偶数,我们可以使用filter()函数:
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = list(filter(is_even, numbers))
print(even_numbers)
输出结果为:
[2, 4, 6, 8, 10]
例2: 筛选列表中的质数
我们先定义一个函数is_prime(),判断一个数是否为质数:
def is_prime(n):
if n < 2:
return False
for i in range(2, int(n ** 0.5) + 1):
if n % i == 0:
return False
return True
然后我们定义一个列表numbers存放一组整数,我们想要筛选其中的质数,我们可以使用filter()函数:
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
prime_numbers = list(filter(is_prime, numbers))
print(prime_numbers)
输出结果为:
[2, 3, 5, 7]
例3:筛选列表中的字符串
我们先定义一个函数is_str(),判断一个值是否为字符串:
def is_str(s):
return isinstance(s, str)
然后我们定义一个列表values存放一组值,包括整数、字符串、列表和元组,我们想要筛选其中的字符串,我们可以使用filter()函数:
values = [1, 'hello', [2, 3], (4, 5), 'world']
strings = list(filter(is_str, values))
print(strings)
输出结果为:
['hello', 'world']
总结:
使用filter()函数可方便地筛选出满足指定条件的序列元素。在使用时需要预先定义一个用于筛选序列元素的函数,返回True或False。filter()函数还可应用于其他数据结构,如元组、集合和字典。
