1 # 匿名函数:为了解决那些功能很简单的需求而设计的一句话函数
2
3 # 如
4 def calc(n):
5 return n ** n
6 print(calc(10))
7
8 # 换成匿名函数,匿名函数必须要用lambda关键字写
9 # 左值为函数名,冒号前面的是参数,冒号后面的是返回值,必须一个代码行写完,逻辑执行结束后的结果为返回值
10 calc = lambda n:n**n
11 print(calc(10))
12
13
14 # 将字典中,value最大的值找到打印出来
15 dic = {'k1' : 10, 'k2' : 100, 'k3' : 20}
16 print(max(dic)) # k3
17 print(max(dic, key=lambda k:dic[k])) # k2
18 print(dic[max(dic, key=lambda k:dic[k])]) # 100
19
20
21 # 可以带key关键字参数指定元素被函数操作的内置函数有,带key的都可和匿名函数结合使用
22 # max()
23 # min()
24 # map()
25 # sorted()
26 # filter()
27
28
29
30
31 # 面试题
32 #1 求输出
33 d = lambda p:p*2
34 t = lambda p:p*3
35 x = 2
36 x = d(x)
37 x = t(x)
38 x = d(x)
39 print(x) # 24
40
41 # 2
42 # 现有两个元组,
43 t1 = (('a'), ('b'))
44 t2 = (('c'), ('d'))
45 # 请使用python中匿名函数生成列表 [{'a' : 'c'}, {'b' : 'd'}]
46 res = map(lambda tup:{tup[0]:tup[1]}, zip(t1, t2))
47 print(list(res))
48
49
50 #3 以下代码的输出是什么?请给出答案并解释
51 def multipliers():
52 return [lambda x:i*x for i in range(4)]
53 print([m(2) for m in multipliers()]) # [6, 6, 6, 6]
54
55
56 def multipliers():
57 return (lambda x:i*x for i in range(4)) # 改成生成器表达式
58 print([m(2) for m in multipliers()]) # [0, 2, 4, 6]