什么是lambda表达式
我们通常在写代码的时候会写很多很多的函数,这些函数往往要用到def…return等多行代码,但实际有用的代码很少很少,那么lambda表达式就是这样一种简写函数的常用的措施。
一个例子
定义一个函数
def f(x,y):
return x+y
print(f(2,3))
打印出来的结果是5;
这个函数是一个求和的函数,使用lambda表达式可以是这样:
f = lambda x,y:x+y
print(f(2,3))
打印出来的结果也是5;
可以看出二者的区别,lambda表达式没有def和return,lambda的输入就是“:”前的参数,输出就是“:”后的表达式
排序中的lambda表达式
定义一个用于排序的函数
data = [['勒布朗-詹姆斯',‘洛杉矶湖人’,34],
['扬尼斯-阿德托昆博','密尔沃基雄鹿队',24],
['迈克尔-乔丹','芝加哥公牛队',56]]
def solution(people):
return people[2]
data.sort(key = solution)
print(data)
打印出来的结果是:
[['扬尼斯-阿德托昆博', '密尔沃基雄鹿队', 24], ['勒布朗-詹姆斯', '洛杉矶湖人', 34], ['迈克尔-乔丹', '芝加哥公牛队', 56]]
这个排序就是将data数组按照元素的第三个值进行从大到的排序;
而使用lambda表达式就是这样:
data = [['勒布朗-詹姆斯',‘洛杉矶湖人’,34],
['扬尼斯-阿德托昆博','密尔沃基雄鹿队',24],
['迈克尔-乔丹','芝加哥公牛队',56]]
data.sort(key = lambda people:people[2])
print(data)
上面的代码打印出来的结果同样也是:
[['扬尼斯-阿德托昆博', '密尔沃基雄鹿队', 24], ['勒布朗-詹姆斯', '洛杉矶湖人', 34], ['迈克尔-乔丹', '芝加哥公牛队', 56]]
混合函数中的lambda表达式
定义一个用于求二元二次方程的函数:
def f(a,b,c):
return lambda x:a*x*x+b*x+c
print(f(1,2,3)(3))
该程序打印出来的结果是:18
可以看出当参数过多的时候可以在函数体内定义lambda表达式,传入lambda表达式的参数与传入函数的参数是分开的,这样有利于区分参数。