一、什么是匿名函数
匿名函数通俗的讲就是没有名字的函数,是一种简单、在同一行中定义的函数。
匿名函数构造简单,不需要把函数提取出来放到外面单独列出来,这也是为什么使用其的原因。
二、匿名函数的格式: lambda arg1,arg2,arg3… :<表达式>
lambda arg1,arg2,arg3… :<表达式>
函数输入:
功能 | 对应函数中的内容 |
---|---|
函数输入 | arg1/arg2/arg3…… |
函数主体 | <表达式> |
运算结果 | 表达式的运算结果 |
例子:
lambda x,y : x*y 函数输入x,y,输出x和y的乘积
a = lambda x : x*2
print(a(3)) #输出6
a = [lambda x:x+2,lambda x:x*2]
print(a[0](3),a[1](3)) #输出5,6
三、例题考察(学习的时候拧螺丝,做题需要造大炮,答案在最后)
基础题:
1、下面这段代码会有什么效果呢?
time.sleep=lambda x:None
time.sleep(3)
2、下面这段代码输出是什么?
add=lambda x, y: x+y
print(add(1,2))
进阶题:
1、求返回值
sorted([1, 2, 3, 4, 5, 6, 7, 8, 9], key=lambda x: abs(5-x))
2、求返回值
list(filter(lambda x: x % 3 == 0, [1, 2, 3]))
3、求返回值
list(map(lambda x: x+1, [1,2,3]))
四、答案
基础题:
1、程序不会进行3秒钟的休眠操作
2、输出3
进阶题:
1、解答:
sorted(iterable[, cmp[, key[, reverse]]])
s.sort([cmp[, key[, reverse]]])中参数的含义:
- cmp 为用户定义的任何比较函数,函数的参数为两个可比较的元素(来自 iterable或者 list),函数根据第一个参数与第二个参数的关系依次返回 -1、0 或者 +1(第一个参数小于第二个参数则返回负数)。该参数默认值为 None
- key 是带一个参数的函数,用来为每个元素提取比较值,默认为 None(即直接比较每 个元素)
- reverse 表示排序结果是否反转
sorted([1, 2, 3, 4, 5, 6, 7, 8, 9], key=lambda x: abs(5-x))是将每一个元素拿去计算得出和5的差距,然后再排序,所以含义就是计算每一个元素到5的距离从小到大的排序。返回值应该是[5, 4, 6, 3, 7, 2, 8, 1, 9]
2、解答:
filter是过滤器,过滤出能被3整除的数,注意如果没有 list() 类型转换将返回一个可迭代对象,这里返回值应该是[3]
3、解答:
返回[2, 3, 4]