Python lambda 不接受 tuple 参数

我在两台 PC 上运行 Eclipse SDK v3.6和 PyDev v2.6插件,分别使用 Linux 和 Windows。

我想传递一个元组作为参数,比如:

foo = lambda (x,y): (y,x)
print (foo((1,2)))

这种方法可以在 Linux 上运行,并得到正确的结果:

> (2,1)

在 Windows 上出现了一个错误:

foo = lambda (x,y): (y,x)
^
SyntaxError: invalid syntax

如何解决这个问题?

77280 次浏览

您可能在 Windows 上运行 Python 3.x,在 Linux 上运行 Python 2.x。在 Python3中,解压元组参数的能力被删除了: 请参阅 PEP 3113

您可以手动解压缩 tuple,这对 Python 2.x 和3. x 都适用:

foo = lambda xy: (xy[1],xy[0])

或者:

def foo(xy):
x,y = xy
return (y,x)