1.匿名函数的定义
关键字:
lambda,冒号前面是形参 冒号后面是返回值
一般格式:
lambda 形参:返回值
(1).匿名函数实现序列的累加
# 导入reduce模块
from functools import reduce
# reduce函数:把结果继续和序列的下一个元素累计计算
print(reduce(lambda x,y:x+y,[1,2,3,4,5]))
(2).匿名函数实现序列的累次方
# 导入reduce模块
from functools import reduce
print(reduce(lambda x,y:x ** y,[2,2,2,2]))
(3).匿名函数实现序列的各项平方
# map函数:将传入的函数依次作用到序列的每个元素,并且把结果作为新的序列返回
# 由于返回值为对象,所以还需要用list强制转换为列表类型
print(list(map(lambda x:x ** 2,[1,2,3,4,5])))
(4).匿名函数求10的阶乘
# 导入reduce模块
from functools import reduce
print(reduce(lambda x,y:x*y,range(1,11)))
2.匿名函数的参数
(1).默认参数
f = lambda x,y=2:x ** y
print(f(3))
print(f(3,3))
(2).可变参数
f = lambda *args:sum(args)
print(f(5,6))
print(f(5,6,7))
(3).关键字参数
f = lambda **kwargs:kwargs.values()
print(f(name='fentiao',age=3))
3.匿名函数练习
需求:
用匿名函数实现:
将给定的序列中所有的0移动到最后,其他元素位置均不变
代码:
# 定义列表
nums = [0,7,0,1,2,1,5,1,7,8,0,67,1,3,4]
print(nums)
# sorted(序列,key):按照key将序列排序
# lambda 形参:返回值, 匿名函数
# 仅当x为0时返回1,其他情况均为返回0
print(sorted(nums,key=lambda x:1 if x == 0 else 0))
运行结果: