Python的拉姆达不接受元组参数[复制](Python lambda does not accep

2019-06-26 00:55发布

这个问题已经在这里有一个答案:

  • 嵌套的参数不编译 1个回答

我两台PC上运行时的PyDev V2.6插件的Eclipse SDK 3.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

如何解决这个问题呢? 提前致谢...

由于interjay和他的参考PEP 3113我发现一个元组参数从3.0版本的Python弃用。

因此,代码不工作,看起来

accepts = filter(lambda q1, q2: (q1, q2) in states, [(q1, q2) for q1 in D1.accepts for q2 in D2.accepts])

现在工作在两个2.7版本和3.0版本的Python和看起来

accepts = filter(lambda q: (q1, q2) in states, [(q1, q2) for q1 in D1.accepts for q2 in D2.accepts])

其中接受是tupes列表反正。

Answer 1:

你可能会在Windows上运行的Python 3.x和Linux上的Python 2.x的。 在Python 3辗转解压元组参数的能力:见PEP 3113 。

您可以手动把它解析代替,这将关于Python 2.x和3.x两个工作:

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

要么:

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


文章来源: Python lambda does not accept tuple argument [duplicate]