匿名函数
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]
以上是关于匿名函数的主要内容,如果未能解决你的问题,请参考以下文章