在python3中映射lambda

2024-09-30 08:19:20 发布

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

我试图在python3中使用一个生动的例子,但是在这一行中得到了一个语法错误:

return map(lambda (x, y, an): (x, y), cornersWithAngles)

我已经读到在python3中不允许使用括号来解压lambda中的参数,但是我不知道如何调整代码来解决这个问题。在

以下是完整的代码(错误在第16行):

^{pr2}$

Tags: lambda代码anmap参数return错误python3
2条回答

您要做的(在lambda中的参数解包)在python2中有效,但在python3中不再有效。在

Python 2.7.15rc1 (default, Nov 12 2018, 14:31:15) 
>>> lst = [(1,2,3), (4,5,6), (7,8,9)]
>>> map(lambda (a,b,c): (a,b), lst)
[(1, 2), (4, 5), (7, 8)]

Python 3.6.7 (default, Oct 22 2018, 11:32:17) 
>>> lst = [(1,2,3), (4,5,6), (7,8,9)]
>>> map(lambda (a,b,c): (a,b), lst)
  File "<stdin>", line 1
    map(lambda (a,b,c): (a,b), lst)
               ^
SyntaxError: invalid syntax

不过,你还是可以做一些事情。在

^{pr2}$

就个人而言,我会使用列表理解或生成器表达式。 另外,请记住,在python3中,map是一个生成器,而不是一个列表,因此在使用map时,您可能必须将结果包装成一个list,这取决于您想用它做什么。在

只需使用x作为元组,这可能会有帮助:

map(lambda x: (x[0], x[1]), cornerWithEdges)

相关问题 更多 >

    热门问题