匿名函数:为了解决那些功能很简单的需求而设计的一句话函数
这段代码
def calc(n):
return n**n
print(calc(10))
换成匿名函数
calc = lambda n:n**n
print(calc(10))
下面给出了一个关于匿名函数格式的说明:
函数名 = lambda 参数 :返回值 #参数可以有多个,用逗号隔开 #匿名函数不管逻辑多复杂,只能写一行,且逻辑执行结束后的内容就是返回值 #返回值和正常的函数一样可以是任意数据类型
栗子:返回dic中value最大的那个key
dic={'k1':10,'k2':100,'k3':30}
def func(key):
return dic[key]
print(max(dic,key=func)) #根据返回值判断最大值,返回值最大的那个参数是结果
也可以:
dic={'k1':10,'k2':100,'k3':30}
print(max(dic,key=lambda key:dic[key]))
现有两个元组(('a'),('b')),(('c'),('d')),请使用python中匿名函数生成列表[{'a':'c'},{'b':'d'}]
思路:想到zip,和匿名函数,只要考到匿名函数就要想到内置函数,
ret =zip((('a'),('b')),(('c'),('d')))
for i in ret:
print(i)
('a', 'c')
('b', 'd')
此时输出的结果和目标已经很相似了,但是现在输出还是元祖不是字典
ret =zip((('a'),('b')),(('c'),('d')))
def func(tup):
return {tup[0]:tup[1]}
res = map(func,ret)
for i in res:
print(i)
{'a': 'c'}
{'b': 'd'}
现在变为字典了,在合成一个列表
ret =zip((('a'),('b')),(('c'),('d')))
def func(tup):
return {tup[0]:tup[1]}
res = map(func,ret)
print(list(res))
[{'a': 'c'}, {'b': 'd'}]
到此时还是没有使用匿名函数,在进行简化
ret =zip((('a'),('b')),(('c'),('d')))
# def func(tup):
# return {tup[0]:tup[1]}
res = map(lambda tup:{tup[0]:tup[1]},ret)
print(list(res))
print(list(map(lambda tup:{tup[0]:tup[1]},zip((('a'),('b')),(('c'),('d'))))))