匿名函数:
- 匿名函数的关键字为lambda,冒号前面是行参 冒号后面是返回值
题目1:求1+2+3+4+5
- 正常方法:
from functools import reduce
def add(x,y):
return x + y
print(reduce(add,range(6)))
结果:
15
- 使用匿名函数(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 ##值相加
匿名函数的关键字参数:参数为字典
f = lambda **kwargs:kwargs.values()
print(f(name='fentiao',age=10))
结果:
dict_values(['fentiao', 10])
匿名函数的练习:
- 将下面列表中的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]