#1.下面程序的输出结果是:
d = lambda p:p*2
t = lambda p:p*3
x = 2
x = d(x)
# 执行匿名函数 d 得出结果 x = 2*2 =4
x = t(x)
# x=4 接着执行匿名函数 t 得出结果 x=4*3=12
x = d(x)
# x = 12 接着执行匿名函数 d 得出结果 x = 12*2 =24
print(x) # 打印 24
#2.现有两元组(('a'),('b')),(('c'),('d')),请使用python中匿名函数生成列表[{'a':'c'},{'b':'d'}]
# 思路:匿名函数--->内置函数:max min filter sorted map
# zip 取到的是元组 需要转为字典
ret = zip((('a'),('b')),(('c'),('d')))
# for i in ret:
# print(i)
# 根据map()方法,map(函数名,可迭代的),会调用for循环对可迭代的进行取值,将值一个个放入函数里运行
#将元组转为字典
# def func(tup):
# return {tup[0]:tup[1]}
#
# func = lambda tup:{tup[0]:tup[1]}
# res = map(func,ret)
res = map(lambda tup:{tup[0]:tup[1]}, zip((('a'),('b')),(('c'),('d')))
)
print(list(res))
#3.以下代码的输出是什么?请给出答案并解释。
def multipliers():
return [lambda x:i*x for i in range(4)]
print([m(2) for m in multipliers()])
# multipliers() 调用后返回,其中 for i in range(4),已经执行,所以i=3 4个 [lamdba x:3*x][lamdba x:3*x][lamdba x:3*x][lamdba x:3*x]
#请修改multipliers的定义来产生期望的结果。
# 改为生成器
def multipliers():
return (lambda x:i*x for i in range(4))
print([m(2) for m in multipliers()])