当lambda表达式在Python中接受两个参数时出错

2024-04-16 06:21:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Python还不太熟悉,并且在练习基础知识。我使用lambda表达式获取两个参数并对它们执行平方运算(例如:var ** 2)。这两个参数来自zip(list1, list2)。我要为此得到TypeError。我试着寻找解决办法,但没有找到。我甚至尝试过在括号中写lambda参数(例如:lambda (v1,v2):),但结果抛出了SyntaxError。在

下面是python代码:

list1 = [1,2,3,4]
list2 = [5,6,7,8]
print ( list(map(lambda v1,v2: (v1**2, v2**2), list(zip(list1, list2)))) )

错误:

^{pr2}$

Tags: lambda参数表达式varziplistv2括号
2条回答

在您的打印中,map将在元组列表上调用lambda函数(因为list(zip(list1, list2))生成一个元组列表)。在

例如,您可以:

print(list(map(lambda(v1,v2): (v1**2, v2**2), list(zip(list1, list2)))))

lambda函数将使用元组(v1,v2)作为参数,而不是两个参数。在

您将一个列表作为map的参数,因此map一次使用列表中的一个元素调用您的{},即一个参数,即使它是元组。你可能想要的是:

print ( list(map(lambda v: (v[0]**2, v[1]**2), zip(list1, list2))) )

这样列表中的项作为唯一参数传递给lambda。 如果坚持使用两个参数lambda,则丢弃{},并将列表作为单独的参数直接传递给map

^{pr2}$

相关问题 更多 >