函数是Python的核心内容之一,能够提高代码的重复利用率。为了更好的使用函数,有必要了解函数的一些高级用法。
Python内置了三个高阶函数:所谓高阶函数就是以函数作为参数,或者返回一个函数的函数,这样的都成为高阶函数。
三个高阶函数:
一、map(f,sq)函数:
参数:
f:是一个函数
sq:是一个可迭代的对象,可以是list、字符串等。
作用:将函数f作用到sq的每一个元素上。
等价于:f(x) for x in sq
解释:map不会改变原有sq,而是会返回一个新的迭代器对象,也可以说是返回了一个map对象。
示例:
而将其转为list时,才会被正常输出。
二、filter(f,sq)函数 :
参数:
f:是一个函数
sq:是一个可迭代的对象,可以是list、字符串等。
作用:通过函数f来筛选sq中的元素。
等价于:x for x in sq if f(x)
解释:filter不会改变原有序列,而是返回一个新的迭代器对象。filter()
函数返回的是一个Iterator
,也就是一个惰性序列,所以要强迫filter()
完成计算结果,需要用list()
函数获得所有结果并返回list。
示例:
三、reduce(f,sq,init)函数:
参数:
f:一个支持二元操作的函数
sq:一个可迭代的序列
init:初始化值
作用:接受的是一个支持二元操作的函数f(x,y),实现对序列sq中的元素实现累加计算,并返回单一结果。
示例: