filter操作是函数式编程中对集合的重要操作之一,其作用是从原集合中筛选符合条件的条目,组成一个新的集合。
这在我们日常编程中是非常常见的操作。我们通常的做法是通过循环语句来处理。
而使用filter方法会非常方面。
我们下面看python中的例子:
我们需求是从一个列表中筛选满足条件的条目,我们先用传统的循环语句来处理
>>> scores = [55, 80, 83, 64, 91, 100, 90, 79]
>>> for score in scores:
... if score>=80 and score<90:
... newscores.append(score)
...
>>> print newscores
[80, 83]
>>>
我们下面用filter函数来处理
>>> filter(lambda x : x>=80 and x<90 ,scores)
[80, 83]
可以看出,用filter函数,只要一句语句,调用filter函数即可,返回值就是过滤后的列表。
也可以看出,filter函数需要两个参数:
第一个参数是处理函数,该函数有一个参数,就是集合中的元素,函数体就是一个返回布尔值的表达式
第二个参数就是待处理的集合
其filter函数的执行思路是,迭代对集合中的每个元素,传给第一个参数定义的函数进行处理,如果函数的返回值为true,则说明该元素需要保留。