Python_匿名函数_47,,匿名函数Eva_J匿


匿名函数

Eva_J

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

技术图片
#这段代码def calc(n):    return n**nprint(calc(10)) #换成匿名函数calc = lambda n:n**nprint(calc(10))
技术图片

技术图片

技术图片

上面是我们对calc这个匿名函数的分析,下面给出了一个关于匿名函数格式的说明

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

我们可以看出,匿名函数并不是真的不能有名字。

匿名函数的调用和正常的调用也没有什么分别。 就是 函数名(参数) 就可以了~~~

请把以下函数变成匿名函数def add(x,y):    return x+yadd = lambda x,y:x+yprint(add(1,2))

上面是匿名函数的函数用法。除此之外,匿名函数也不是浪得虚名,它真的可以匿名。在和其他功能函数合作的时候

l=[3,2,100,999,213,1111,31121,333]print(max(l))dic={‘k1‘:10,‘k2‘:100,‘k3‘:30} print(max(dic)) # k3 #默认取的是key的最大值dic={‘k1‘:10,‘k2‘:100,‘k3‘:30}def func(key):    return dic[key]print(max(dic,key=func))   #根据返回值判断最大值,返回值最大的那个参数是结果print(dic[max(dic,key=lambda k:dic[k])])

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}
def func(key):

return max(key)
print(func(dic.values()))
res = map(lambda x:x**2,[1,5,7,4,8])for i in res:    print(i)输出2516
res = filter(lambda x:x>10,[5,8,11,9,15])for i in res:    print(i)输出15

面试题:

1.下面程序的输出结果是:d = lambda p:p*2t = lambda p:p*3x = 2x = d(x)x = t(x)x = d(x)print x2.现有两元组((‘a‘),(‘b‘)),((‘c‘),(‘d‘)),请使用python中匿名函数生成列表[{‘a‘:‘c‘},{‘b‘:‘d‘}]3.以下代码的输出是什么?请给出答案并解释。def multipliers():    return [lambda x:i*x for i in range(4)]print([m(2) for m in multipliers()])请修改multipliers的定义来产生期望的结果。练习
max([1,2,3,4,5,-6,-7],key=abs)ret = map(abs,[-1,2,-3,4])for i in ret:    print(i)def func(x):    return x**2ret = map(func,[-1,2,-3,4])for i in ret:    print(i)ret = map(lambda x:x**2,[-1,2,-3,4])def func(x):    return x>10res = filter(func,[5,8,11,9,15])for i in res:    print(i)# min max filter map sorted —— lambda

面试题:

1.下面程序的输出结果是:d = lambda p:p*2t = lambda p:p*3x = 2x = d(x) x = t(x)x = d(x)print x #24
2.现有两元组((‘a‘),(‘b‘)),((‘c‘),(‘d‘)),请使用python中匿名函数生成列表[{‘a‘:‘c‘},{‘b‘:‘d‘}]
ret = zip(((‘a‘),(‘b‘)),((‘c‘),(‘d‘)))print(ret)for i in ret:    print(i)ret = zip(((‘a‘), (‘b‘)), ((‘c‘), (‘d‘)))def func(tup):    return {tup[0]:tup[1]}res = map(func, ret)print(list(res))ret = zip(((‘a‘), (‘b‘)), ((‘c‘), (‘d‘)))ret = map(lambda t:{t[0]:t[1]},ret)print(list(ret))

print(list(map(lambda t:{t[0]:t[1]},zip(((‘a‘), (‘b‘)), ((‘c‘), (‘d‘))))))



3.以下代码的输出是什么?请给出答案并解释。def multipliers(): return [lambda x:i*x for i in range(4)]print([m(2) for m in multipliers()])请修改multipliers的定义来产生期望的结果。
def multipliers():    return [lambda x:i*x for i in range(4)]print([m(2) for m in multipliers()])def multipliers():    return (lambda x:i*x for i in range(4))print([m(2) for m in multipliers()])# [6, 6, 6, 6]# [0, 2, 4, 6]

Python_匿名函数_47

评论关闭