创建一个函数get_lambda,该函数返回一个lambda函数,该函数接受一个元组并将元组中的每个元素提高到第二幂。
>>>f = get_lambda()
>>>f((1, 2, 3, 4))
>>>(1, 4, 9, 16)
def get_lambda():
get_lambda = lambda x: x**2
f = get_lambda()
f((1, 2, 3, 4))
我不知道为什么我总是出错。我的代码有什么问题?
答案 0 :(得分:0)
这里要解开的东西很少。如chepner所述,您的get_lambda()
函数没有return语句。改用类似这样的东西:
def get_lambda():
return lambda x: x**2
f = get_lambda()
下一个问题是您的lambda函数接受一个数字并输出其平方-它不适用于元组!为了将其应用于整个列表,您可以使用内置的map
函数,例如:
out = map(f, (1,2,3,4))
print(tuple(out)) # prints (1, 4, 9, 16)
或者,您可以重写lambda以应用于可迭代对象(例如列表和元组):
def get_lambda():
return lambda tup: (i**2 for i in tup)
f = get_lambda()
out = f((1,2,3,4))
print(tuple(out))