我在两台PC上运行带有PyDev v2.6插件的Eclipse SDK v3.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])
现在适用于Python的2.7版和3.0版,看起来像
accepts = filter(lambda q: (q1, q2) in states, [(q1, q2) for q1 in D1.accepts for q2 in D2.accepts])
接受无论如何都是一个tupes列表。
答案 0 :(得分:71)
您可能在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)