当需要从一个序列中筛选出一部分元素时,可以使用filter()
函数来进行操作。filter()
函数的作用是将一个序列作为输入,并通过一个布尔函数过滤掉一些元素。最终输出过滤后的元素序列。
filter()
函数的基本语法如下:
filter(function, iterable)
其中,function
是一个函数,表示对传入的每个元素进行判断的条件;iterable
是一个可迭代对象,可为列表、元组、集合等。
以下是一个示例,使用filter()
函数从列表中筛选出所有的偶数:
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
result = list(filter(lambda x: x % 2 == 0, my_list))
print(result) # 输出 [2, 4, 6, 8, 10]
上面的代码中,lambda x: x % 2 == 0
表示对传入的x
进行求余操作,判断其是否为偶数,是则返回True
,否则返回False
。filter()
函数对my_list
中的每个元素都进行该判断,将判断结果为True
的元素放入结果序列中,最终返回一个列表。
另一个示例是使用filter()
函数过滤掉列表中的空字符:
my_list = ['hello', '', 'world', '', '']
result = list(filter(None, my_list))
print(result) # 输出 ['hello', 'world']
上面的代码中,将None
作为function
参数传入filter()
函数中,表示过滤掉所有False
值,包括空字符串、None
等,将非False
的元素作为结果返回。
在使用filter()
函数时,常常会结合lambda
函数使用, lambda
函数为匿名函数,可以更方便地对元素进行判断和转换。使用filter()
函数的注意点是,需要将结果转化成序列,否则返回的是一个filter
对象。