Python笔记4(匿名函数)

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])
原文地址:https://www.cnblogs.com/xingye-mdd/p/8977642.html