调试?或lambda函数和元组

时间:2018-09-25 19:22:03

标签: python lambda tuples

创建一个函数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))

我不知道为什么我总是出错。我的代码有什么问题?

1 个答案:

答案 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))