lambda 参数列表: 表达式
""" 1. 使用 lambda 表达式定义了一个函数 2. 使用 lambda 表达式定义的函数没有名字(匿名函数) 3. 冒号后面是函数的返回值,不要使用 return 进行返回 """ f2 = lambda : 100 res = f2() print(res) # 100 """ 注意 > lambda 表达式的参数可有可无,函数的参数在 lambda 表达式中完全适用 > lambda 表达式能接收任何数量的参数但只能返回一个表达式的值 """
""" 在 lambda 关键字和冒号之间是函数的参数(可以是多个参数) """ f4 = lambda a: a + 100 res = f4(100) print(res) # 200 f6 = lambda a,b: a + b res = f6(10,20) print(res) # 30
# 可变参数 f1 = lambda *args: sum(args) print(f1(1,2,3,4,5)) # 15 f2 = lambda **kwargs: kwargs print(f2(name='张三',age=20)) #{'name': '张三', 'age': 20}
# 判断大小 compare = lambda a,b: a if a > b else b print(compare(10,66)) # 66 # 按照人的年龄进行排序 students = [{'name': 'TOM', 'age': 20}, {'name': 'ROSE', 'age': 19}, {'name':'Jack', 'age': 22}] students.sort(key= lambda age: age['age']) print(students) # 运行结果: # [{'name': 'ROSE', 'age': 19}, {'name': 'TOM', 'age': 20}, {'name': 'Jack', 'age': 22}]'
lambda 表达式的认识 1. lambda 表达式的函数是匿名函数 2. lambda 表达式是为了简化函数的定义 3. lambda 表达式冒号后面只能有一行代码,原因是冒号后面的代码就是普通函数 return 后面内容 lambda 表达式与普通函数的对比 1. lambda 方式不用为函数起名字 2. lambda 方式一行代码搞定 3. 对于只使用 1 次的函数,没必要单独定义,使用 lambda 方式非常快捷
解释说明:如果一个函数的参数是函数,此函数就叫做高阶函数。
def do_everything(a,b,fn): return fn(a,b) print(do_everything(10,5,lambda n1,n2: n1 + n2)) # 15 print(do_everything(10,5,lambda n1,n2: n1 - n2)) # 5 print(do_everything(10,5,lambda n1,n2: n1 * n2)) # 50 print(do_everything(10,5,lambda n1,n2: n1 / n2)) # 2.0
f1 =lambda *args: sum(args) print(f1(10,20,30)) # 60
f1 = lambda list1: [list1[i] for i in range(len(list1)) if i % 2 != 0] print(f1(['张三','法外狂徒','小明','老王',True,666])) # ['法外狂徒', '老王', 666]
f1 = lambda list1: list1[:2] if len(list1) > 2 else list1 print(f1(['张三','法外狂徒','小明','老王',True,666])) # ['张三', '法外狂徒']
f1 = lambda list1,list2:[(x,y) for x in list1 for y in list2] print(f1(['红心','草花','方块','黑桃'],[2,3,4,5,6,7,8,9,10,'J','Q','K','A']))
f1 = lambda *args: {'max':max(args),'min':min(args)} print(f1(2, 5, 7, 8, 4)) # {'max': 8, 'min': 2}
def result(x,y,fn): return fn(x,y) print(result(2,5,lambda x,y: x * y ** 2)) # 圆的面积 print(result(2,5,lambda x,y: x ** 2)) # 正方形的面积 print(result(2,5,lambda x,y: x * y)) # 长方形的面积
fib = lambda n: n if n < 2 else fib(n - 1) + fib(n - 2) listData = [fib(i) for i in range(1,21)] print(listData)
f1 = lambda list1: [i for i in list1 if (i+1) % 2 != 0] print(f1([1,2,3,4,5])) # [2, 4]