匿名函数

Posted whylinux

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了匿名函数相关的知识,希望对你有一定的参考价值。

技术分享图片
 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]
View Code

 

以上是关于匿名函数的主要内容,如果未能解决你的问题,请参考以下文章

repost对JAVASCRIPT匿名函数的理解(透彻版)

如何启动匿名线程类

匿名函数

匿名函数的用法

使用匿名函数瓶颈提高 matlab 代码的性能

函数式编程——匿名函数