匿名函数

匿名函数

  为了解决那些功能很简单的的需求而设计的一句话函数

复制代码
#这段代码
def calc(n):
    return n**n
print(calc(10))
 
#换成匿名函数
calc = lambda n:n**n
print(calc(10))
复制代码

函数名 = lambda 参数 :返回值

#参数可以有多个,用逗号隔开
#匿名函数不管逻辑多复杂,只能写一行,且逻辑执行结束后的内容就是返回值
#返回值和正常的函数一样可以是任意数据类型

然而匿名函数并不是真的不能有名字,匿名函数的调用和正常函数的也没什么分别

请把以下函数变成匿名函数
def add(x,y):
    return x+y

====>>      add = lambda  x,y  :  x+y

匿名函数其他功能的用法

复制代码
l=[3,2,100,999,213,1111,31121,333]
print(max(l))

dic={'k1':10,'k2':100,'k3':30}


print(max(dic))
print(dic[max(dic,key=lambda k:dic[k])])
复制代码
复制代码
res = map(lambda x:x**2,[1,5,7,4,8])
for i in res:
    print(i)

输出
1
25
49
16
64
复制代码
复制代码
res = filter(lambda x:x>10,[5,8,11,9,15])
for i in res:
    print(i)

输出
11
15
复制代码

面试题

现有两个元组(('a'),('b')),(('c'),('d')),请使用python中匿名函数生成列表[{'a':'c'},{'b':'d'}]

#答案一
test = lambda t1,t2 :[{i:j} for i,j in zip(t1,t2)]
print(test(t1,t2))
#答案二
print(list(map(lambda t:{t[0]:t[1]},zip(t1,t2))))
#还可以这样写
print([{i:j} for i,j in zip(t1,t2)]
 
原文地址:https://www.cnblogs.com/wanghaohao/p/7308582.html