掌握Python中的filter()函数及其用法实例
Python中的filter()函数是一种用于筛选序列(包括列表、元组、字符串等)的高阶函数。该函数接受一个函数和一个可迭代对象作为参数,并返回一个由满足函数条件的元素组成的新的可迭代对象。
filter()函数的参数包括一个函数和一个可迭代对象。函数参数通常是一个匿名函数或自定义函数,用于判断每个元素是否满足条件。可迭代对象可以是列表、元组、字符串,或者使用range()函数生成的迭代对象。
filter()函数的工作原理是,遍历可迭代对象中的每个元素,将元素传递给函数进行判断。如果函数返回True,则将该元素保留在结果中;如果函数返回False,则将该元素忽略。最终,filter()函数返回的结果是一个由满足条件的元素组成的新的可迭代对象。
下面是filter()函数的示例用法:
示例1:筛选出列表中的偶数
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] even_numbers = list(filter(lambda x: x % 2 == 0, numbers)) print(even_numbers)
输出结果:
[2, 4, 6, 8, 10]
在这个示例中,我们使用了lambda表达式作为函数参数,判断元素是否为偶数。filter()函数筛选出满足条件的元素,然后使用list()函数将其转换为列表。
示例2:筛选出字符串中的大写字母
string = 'Hello World'
uppercase_letters = filter(lambda x: x.isupper(), string)
print(''.join(uppercase_letters))
输出结果:
HW
在这个示例中,我们使用了lambda表达式作为函数参数,判断元素是否为大写字母。filter()函数筛选出满足条件的元素,然后使用''.join()函数将其连接成一个新的字符串。
除了lambda表达式外,我们还可以使用自定义函数作为函数参数。例如,我们可以定义一个函数is_prime()来判断素数,然后使用filter()函数筛选出列表中的素数:
示例3:筛选出列表中的素数
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 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
prime_numbers = list(filter(is_prime, numbers))
print(prime_numbers)
输出结果:
[2, 3, 5, 7]
在这个示例中,我们定义了一个函数is_prime(),用于判断一个数是否为素数。然后,我们使用filter()函数筛选出满足条件的元素,并将其转换为列表。
总结一下,filter()函数是Python中用于筛选序列的高阶函数。它接受一个函数和一个可迭代对象作为参数,返回一个由满足函数条件的元素组成的新的可迭代对象。我们可以使用lambda表达式或自定义函数作为函数参数,根据自己的需求进行筛选。
