lambda:匿名函数
匿名函数的关键字为lambda,冒号前面是形参 冒号后面是返回值
- 题目1:求1+2+3+4+5
正常方法:
nums = [0, 7, 0, 1, 2, 1, 5, 1, 7, 8, 0, 67, 1, 3, 4]
print(sorted(nums,key=lambda x:1 if x == 0 else 0))
结果:
[7, 1, 2, 1, 5, 1, 7, 8, 67, 1, 3, 4, 0, 0, 0]
- 使用匿名函数(lambda)
from functools import reduce
print(reduce(lambda x,y:x+y,range(6)))
结果:
15
- -题目2:
将列表[0,1,2,3,4]的每个元素都平方然后输出
print(list(map(lambda x:pow(x,2),range(5)))) ##注意map输出要转换成列表,否则为对象
结果:
[0, 1, 4, 9, 16]
- 题目3:求10的阶乘
from functools import reduce
print(reduce(lambda x,y:x*y,range(1,11)))
结果:
3628800
- 匿名函数的默认参数
#匿名函数的默认参数
f = lambda x,y=2:x**y
print(f(3))
print(f(2,4)) ##如果传值则默认参数值不生效
结果:
9 ##3的2次方
16 ##2的4次方
*匿名函数的可变参数: args(可接收多个值)
f = lambda *args:sum(args)
print(f(1,2,3,45,6))
结果:
57 ##值相加
- 匿名函数的关键字参数:参数为字典
将下面列表中的0放在最后,其他非0数字保持顺序不变
nums = [0, 7, 0, 1, 2, 1, 5, 1, 7, 8, 0, 67, 1, 3, 4]
nums = [0, 7, 0, 1, 2, 1, 5, 1, 7, 8, 0, 67, 1, 3, 4]
print(sorted(nums,key=lambda x:1 if x == 0 else 0))
结果:
[7, 1, 2, 1, 5, 1, 7, 8, 67, 1, 3, 4, 0, 0, 0]