在 Python 2 中,这段代码是可以运行的:
f = lambda (m, k): m + k
m = [1,2,3,4]
k = [5,6,7,8]
print(map(f, zip(m, k)))
但是在Python 3中,出现了以下错误:
f = lambda (m, k): m + k
^
SyntaxError: invalid syntax
如果我在lambda表达式中删除括号,那么会出现另一个错误:
TypeError: <lambda>() missing 1 required positional argument: 'k'
在Python 3中,将元组作为单个lambda参数进行处理也可以,但这不太清晰(阅读起来困难):
f = lambda args: args[0] + args[1]
我该如何在Python 3中以正确的方式解压值?
map()
函数将函数f
应用于提供的可迭代对象中的每个元素;在您给出的示例中,map()
尝试将(1, 5)
传递给您的函数,该函数需要两个参数,但只提供了一个参数,因此失败并给出错误提示。 - dazedconfused