python高级函数(一)
高级函数就是一个函数可以接收另一个函数作为参数。
reduce 函数
reduce函数在python3里放在了functools模块里,所以使用前要先导入
from functools import reduce
reduce有三个参数
1.function:必须参数,带有2个参数的函数
2.sequence:序列(必须参数,可迭代对象)
3.initial:可选参数,初始值
reduce工作过程
在迭代sequence的过程中,将遍历的前2个元素传给function,经过function处理之后返回的结果和sequence的第三个元素,再传给function处理,返回的结果和sequence的第四个元素再传给function以此类推,,,如果传入了 initial 值, 那么首先传的就不是 sequence 的第一个和第二个元素,而是 initial值和 第一个元素。经过这样的累计计算之后合并序列到一个单一返回值
res = reduce(lambda x,y:x+y,[1,2,3,4])
print(res) #10
res = reduce(lambda x,y:x+y,[1,2,3,4],5)
print(res) #15
map函数
接收一个函数function 和一个 list,并通过把函数 function 依次作用在 list 的每个元素上,得到一个新的 list 并返回
res = map(lambda x:x+1,[1,2,3])
print(list(res)) #[2,3,4]
filter函数
接收一个函数function 和一个list,这个function 的作用是对list的每个元素进行判断,返回True或False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。
res = filter(lambda x:x>7,[1,2,8,9])
print(list(res)) #[8,9]