python高阶函数
reduce()函数
reduce()函数也是Python内置的一个高阶函数,reduce()函数接收的参数和map()类似,一个函数,一个list,但行为和map()不同,reduce()传入的函数必须接收两个参数,reduce()对list的每个元素反复调用函数,并返回最终值。
def prod(x, y):
return x*y
print reduce(prod, [2, 4, 5, 7, 12])
求列表中所有数字之积
也可以使用上一篇文章,合成列表里面,我用了一个匿名函数lambda
from functools import reduce
prod = reduce(lambda, x,y:x*y, [2, 4, 5, 7, 12])
在python3中使用需要
from functools import reduce
filter()函数
filter()函数是Python内置的另一个有用的高阶函数,filter()函数接收一个函数,和一个list,这个函数的作用是对每个元素进行判断,返回True或False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新的list
这里举一个对我自己来说非常有用的例子:
删除none或者空字符串
在爬虫里总是会和搜集到储存在列表里面的信息,对于他们加一些过滤,或是异常处理是很有必要的
def is_not_empty(s):
return s and len(s.strip()) > 0
filter(is_not_empty, ['test', None, '', 'str', ' ', 'END'])
结果:['test', 'str', 'END']
网友评论