文章目录
前言
主要介绍python中的几个高阶函数的使用方法
lambda函数
lambda函数是一种小型的匿名函数,可以接收任意参数,但是只能有一个表达式
#语法
lambda arguments:expression
实例
通过变量调用lambda函数
#编写函数
def add(x):
return x+1
#等同于匿名函数
lambda x:x+1
传入一个参数
#编写加法运算
def add(x):
return x+1
#等同于匿名函数
lambda x:x+1
#调用方法
g = lambda x:x+1
print (g(5))
传入多个参数
x = lambda a, b : a * b
print(x(5, 6))
传入多个参数
x = lambda a, b : a * b
print(x(5, 6))
lambda函数作为参数进行传递
def odd(x):
return x%2
temp =range(1,11)
#内置函数filter
filter(odd,temp)
________________
#等同于
filter(lambda x:x%2,range(1,11))
lambda函数作为其他函数的返回值
这个就是我们python中使用的闭包了
def myfunc(n):
return lambda a : a * n
________________
abc = myfunc(3) #abc = lambda a:a*3
abc(2) # 调用lambda函数 lambda 2:2*3 return 6 打印出6
map函数
使用map() 会根据提供的函数对指定序列做映射,一般跟lambda函数配合
#语法
map(function,iterable) #iterable指的是一个或者多个序列
实例
提供一个参数
def sequare(x):
return x**2
map(sequare,[1,2,3])------>[1,4,9]
######################
#等同于
map(lambda x:x**2,[1,2,3])
提供两个参数
map(lambda x,y:x+y,[1,2,3],[4,5,6])--->[5,7,9]
filter函数
过滤函数,可以对序列进行过滤处理,通过自定义的函数过滤出新的函数
#语法
filter(function,iterable)
实例
#普通写法
def is_odd(n):
return n % 2 == 1
newlist = filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
[1,3,5,7]
######################
#等同于
filter(lambda x:x%2==1,[1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
reduce函数
对参数序列中的元素进行累加
#语法
reduce(function, iterable[, initializer])
实例
#结合匿名函数使用
from functools import reduce
sum2 = reduce(lambda x, y: x+y, [1,2,3,4,5]) # 使用 lambda 匿名函数
print(sum2)