python 的lambda匿名函数

先看一个例子

list(map(lambda x:x*x,[1,2,3,4,5]))

关键字lambda 表示匿名函数,冒号前面的x表示函数参数,冒号后面是表达式

匿名函数有个限制,就是只能有一个表达式,不用写return,返回值就是该表达式的结果

如果是判断表达式,则和filter配合使用,如果是非判断表达式,可以配合reduce或者map使用

#判断表达式
 list(filter(lambda x:x%2==1, range(1, 20)))


#非判断表达式
list(map(lambda x:x*x,[1,2,3,4,5]))

lambda可以作为函数的返回值

def f(x,y):
    return lambda:x*x+y*y

 

lambda也可以接受多个参数,它只是只能有一个表达式,但并不是说只可以接受一个参数,可以接受多个参数,如下:

g = lambda x, y, z : (x + y) ** z
print(g(1,2,2))   #输出9

 

lambda也可以在表达式里面使用if-else

比如if elif else

if 条件1:
    语句1
elif 条件2:
    语句2
else:
    语句3

我们可以使用lambda

lambda x: 语句1 if 条件1 else 语句2 if 条件2 else 语句3 
# 实际上是下面这样表达
lambda x: 语句1 if 条件1 else ( 语句2 if 条件2 else 语句3 )

也可以使用字典

di = {"S":0,"C":1,"Q":2}
f = lambda x: di[x]

 

lambda 接受有多个参数的自定义函数

def score(person_info,finance_info,credit_info,act_info):  
    xbeta = person_info * ( 3.49460978) \
                  + finance_info * ( 11.40051582 ) \
                  + credit_info * (2.45541981) \
                  + act_info * ( -1.68676079) \
                  -0.34484897   
    score = 650-34* (xbeta)/math.log(2)  
    return score  
val['score'] = val.apply(lambda x : 
                            score(x.person_info,x.finance_info,x.
                            credit_info,x.act_info) ,axis=1)  

 

posted on 2020-07-14 15:02  小小喽啰  阅读(250)  评论(0编辑  收藏  举报