本章内容
- 匿名函数lambda
- 匿名函数运用
一、匿名函数lambda
我们所说的匿名函数就是lambda , lambda到底是什么?
lambda是一个表达式 , 而并非语句 , 所以可以出现在def语句所不能出现的位置 , 并且不需要指定函数名; lambda表达式还可以提高代码的可读性 , 简化代码
lambda表达式主要用于写一些简单的方法 , 对于复杂的还是用函数写的好
示例:
1 # 普通函数 2 def func(x): 3 return x * x 4 print(func(5)) 5 ----------------------- 6 # 匿名函数,自带return功能 7 func = lambda x : x * x 8 print(func(5)) 9 --------------------------------------------------- 10 func = lambda arguments : expression using argument
使用匿名函数可以减少命名空间使用内存 , 因为没有函数名
可直接后面传递参数
1 >>> (lambda x,y : x if x > y else y)(1,2) 2 2
非固定参数
1 >>> (lambda *args : args)(1,2,3,4) 2 (1, 2, 3, 4)
PS : 匿名函数主要是与其他函数搭配使用
二、匿名函数运用
结合使用
map , 计算平方
1 # map后返回的对象为map对象,所以利用list方法进行强转 2 >>> list(map(lambda x : x * x, [1,2,3,4])) 3 [1,4,9,16]
filter , 筛选偶数
1 >>> list(filter(lambda x : x % 2 == 0,[1,2,3,4])) 2 [2,4]
reduce , 求和
1 # python3中已经没有reduce方法了,调用需要导入 2 >>> from functools import reduce 3 # reduce(function, sequence, initial=None) 4 >>> reduce(lambda x , y : x + y, [1,2,3,4,5],100) 5 115
嵌套使用
版本一
1 def func(x): 2 return lambda x : x + y 3 f = func(2) 4 print(f(2)) 5 # output: 4
版本二
1 func = lambda x : (lambda y: x + y) 2 y = func(1) 3 y(2) 4 # output: 3
时间: 2024-10-13 14:42:28