1.源码
help(filter)
Help on class filter in module builtins:
class filter(object)
| filter(function or None, iterable) --> filter object
|
| Return an iterator yielding those items of iterable for which function(item)
| is true. If function is None, return the items that are true.
2.分析
filter用于过滤序列,过滤掉不符合条件的元素,返回由符合条件的元素组成的新序列(列表或元组等序列化的数据结构)。
接受两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。
3.举例
def fun_filter(x):
if x > 0:
return True
else:
return False
list(filter(fun_filter, [1,2,3,0,-2,-9]))
4.多个过滤条件
不能改造filter原的方法,我们可以改变自己的函数传参类型,从而控制函数可以使用filter方法。
def fun_filter(vals):
if len(vals) == 2 and vals[0] > 0 and vals[1] > 0:
return True
else:
return False
list(filter(fun_filter, [[1,-1],[1,1],[-1,1]]))
4.与匿名函数结合
li = [1,2,3,4]
list(filter(lambda x: x%2==0, li))