【发布时间】:2015-03-02 18:49:00
【问题描述】:
在 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)传递到您的函数中,该函数接受两个参数,但只提供了一个参数,因此它失败并给您错误。 -
他们从函数中删除了它,以便与类型提示(以及其他)很好地配合使用。另请参阅我的回答:stackoverflow.com/a/54991720/1338797
标签: python python-3.x lambda tuples unpack