【Python 】Lambda 表达式
原创
©著作权归作者所有:来自51CTO博客作者阿呆小记的原创作品,请联系作者获取转载授权,否则将追究法律责任
文章目录
Python 之 lambda 表达式
一、lambda的应用场景
如果一个函数有一个返回值,并且只有一句代码,可以使用lambda简化。(说实话这定义简单到离谱~)
二、lambda语法
注意:
- lambda表达式的参数可有可无,函数的参数在lambda表达式中完全适用。
- lambda表达式能接受任何数量的参数但只能返回一个表达式的值。
返回顶部
三、快速入门 — 案例讲解
需求1:函数 返回值100
1.使用函数实现
def fun():
return 100
print(fun) # <function fun at 0x00000222D5E89CA8>
print(fun()) # 100
2.使用lambda表达式 — 匿名函数
# lambda 参数列表 :表达式
func = lambda : 100
print(func) # <function <lambda> at 0x0000029DD9769CA8> 返回的是一个函数内存地址
print(func()) # 100 上面说到func存储的是一个函数的内存地址,所以在这里调用该函数(),输出值
返回顶部
需求2: 实现两数相加的和
1.使用自定义函数
def two_sum(a,b):
return a+b
print(two_sum(3,4))
2.使用lambda表达式
sum = lambda a,b : a+b
print(sum(3,4))
通过上述的案例我们可以看到lambda表达式的简便性,可以将多行的函数缩短为一行,大大减少了存储的内存。
注意:
1.利用变量存储的lambda表达式,实际上该变量存储的就是lambda的内存地址,通过该返回值可以看出lambda表达式同样是一个函数,所以lambda表达式又称为匿名函数,只是呈现方式更加简便。既然是函数对象,在输出其返回值的时候就需要我们对其进行调用 — 变量名(函数名)()
。
返回顶部
四、lambda表达式的参数形式
1.无参数类型
fun = lambda : 100
print(fun())
用于直接返回值直接调用函数即可!
2.一个参数类型
fun1 = lambda a : a
print(fun1('Hello World!')) /Hello World!
3.两个参数类型
fun2 = lambda a,b : a+b
print(fun2(4,5)) //9
4.默认参数类型
fun3 = lambda a, b, c=100 : a+b+c
print(fun3(10,20)) // 130
print(fun3(10,20,30)) // 60
默认参数又称为缺省值,就是在调用函数的时候可以传入对应的值,也可以不传入。不传入值则将使用定义的默认值;传入,则将使用传入的值。
5.可变参数类型: *args
fun4 = lambda *args : args
print(fun4(10,20,30))
*args接收的是不定长的未知参数,返回的类型为元组
6.可变参数类型:**kwargs
fun5 = lambda **kwargs : kwargs
print(fun5(name = 'python',age = 20))
print(fun5(name = 'python',age = 20,sex = '男'))
接收不定长的关键字参数,返回的是一个字典
返回顶部
五、lambda表达式的应用
1.带判断的lambda表达式
fun = lambda a,b : a if a>b else b
print(fun(5,4))
2.列表信息按照字典的key值排序
students = [
{'name':'TOM','age':20},
{'name':'ROSE','age':19},
{'name':'Jack','age':22}
]
# 按照name升序排列
students.sort(key=lambda x:x['name'])
print(students)
# 按照name降序排列
students.sort(key=lambda x:x['name'],reverse=True)
print(students)
# 按照age值升序排列
students.sort(key=lambda x:x['age'])
print(students)
返回顶部