filter()函数,该函数可以从一个序列中选出满足条件的元素,并返回一个新的序列。
filter()函数是 Python 内置函数之一,它用于从一个序列中选出满足条件的元素,并返回一个新的序列。这个函数的语法如下:
filter(function, iterable)
其中,function 表示要过滤掉元素的条件,即一个函数,iterable 表示要过滤的序列,可以是 list、tuple、str 等可迭代对象。filter() 函数将会遍历可迭代对象中的每个元素,并将它们传递给 function 函数,function 函数会对每个元素进行判断,如果元素满足 function 函数的条件,则保留这个元素,否则将其过滤掉。最终,filter() 函数返回满足条件的元素组成的新的可迭代对象。
举个例子,假设我们要从一个列表中选出所有的正整数,可以使用 filter() 函数实现:
def is_positive(x):
return x > 0
numbers = [-2, 3, 1, 0, -5, 6, 8, -9]
positive_numbers = list(filter(is_positive, numbers))
print(positive_numbers)
这段代码中,我们首先定义一个函数 is_positive,它接收一个参数 x,如果 x 大于 0,则返回 True,否则返回 False。接着,我们创建一个数字列表 numbers,其中包含了正数、负数和 0。最后,我们使用 filter() 函数,传入 is_positive 函数和 numbers 列表。filter() 函数会遍历 numbers 中的每个元素,并将它们传递给 is_positive 函数。如果 is_positive 函数返回 True,则保留该元素,否则将其过滤掉。最终,我们得到了一个列表 positive_numbers,其中只包含了正整数 [3, 1, 6, 8]。
除了使用函数来作为过滤条件外,还可以使用 lambda 表达式来代替函数。比如,上面的例子也可以这样写:
numbers = [-2, 3, 1, 0, -5, 6, 8, -9] positive_numbers = list(filter(lambda x: x > 0, numbers)) print(positive_numbers)
这里使用了 lambda 表达式来定义过滤条件,等价于在 filter() 函数中传入一个函数 is_positive,只不过这个函数是以匿名函数的形式出现。
总的来说,filter() 函数是一种很方便的数据过滤方法,能够快速、高效地从一个序列中选出满足条件的元素,避免了我们手动遍历序列并判断元素的麻烦。同时,filter() 函数也非常灵活,既可以使用函数来定义过滤条件,也可以使用 lambda 表达式来达到同样的效果。
