1、匿名函数介绍
匿名函数:为了解决那些功能很简单的需求而设计的一句话函数
函数名 = lambda 参数 :返回值
参数可以有多个,用逗号隔开
匿名函数不管逻辑多复杂,只能写一行,且逻辑执行结束后的内容就是返回值
返回值和正常的函数一样可以是任意数据类型
2、lambda表达式
1 # lambda表达式 2 def add(a,b): 3 return a+b 4 5 add = lambda a,b : a+b 6 print(add(1,2)) 7 8 #1、返回1~10的平方 9 [i**2 for i in range(10)] 10 def func(num): 11 return num ** 2 12 13 for i in map(func,range(10)):print(i) 14 15 #使用lambda表达式 16 for i in map(lambda num : num ** 2 ,range(10)):print(i) 17 18 #2、计算元素的最小值 19 def func(num): 20 return num%2 21 print(min(-2,3,-4,key=func)) 22 #使用lambda表达式 23 print(min(-2,3,-4,key=lambda num:num%2)) 24 25 # 3、代码的输出是什么 26 d = lambda p:p*2 27 t = lambda p:p*3 28 x = 2 29 x = d(x) # x = 4 30 x = t(x) # x = 12 31 x = d(x) 32 print(x) 33 #>>>24 34 35 # 4、现有两元组(('a'),('b')),(('c'),('d')),请使用python中匿名函数生成列表[{'a':'c'},{'b':'d'}] 36 def func(t): 37 return {t[0]:t[1]} 38 39 ret = map(func,zip((('a'),('b')),(('c'),('d')))) 40 print(list(ret)) 41 #使用lambda表达式 42 ret = map(lambda t:{t[0]:t[1]},zip((('a'),('b')),(('c'),('d')))) 43 print(list(ret)) 44 45 # 5、以下代码的输出是什么?请给出答案并解释。 46 def multipliers(): 47 return [lambda x:i*x for i in range(4)] 48 print([m(2) for m in multipliers()]) 49 #>>>[6, 6, 6, 6] 50 51 #分析 52 # def multipliers(): 53 # lst = [] 54 # i = 0 55 # lst.append(lambda x:i*x) 56 # i = 1 57 # lst.append(lambda x:i*x) 58 # i = 2 59 # lst.append(lambda x:i*x) 60 # i = 3 61 # lst.append(lambda x:i*x) 62 # # lst = [lambda x:3*2,lambda x:i*x,lambda x:i*x,lambda x:i*x] 63 # return lst 64 # print([m(2) for m in multipliers()]) 65 66 # 6、请修改multipliers的定义来产生期望的结果 67 # def multipliers(): 68 # return [lambda x:i*x for i in range(4)] 69 g = (lambda x:i*x for i in range(4))#列表推导式修改成生成器表达式 70 print([m(2) for m in g])