【发布时间】:2012-07-04 21:53:19
【问题描述】:
我在两台 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
如何解决问题?
【问题讨论】:
-
真的吗?在 Win 机器上为我工作。
-
两者的 Python 版本相同?
-
"我发现 Python 3.0 版本弃用了一个元组参数" 更准确地说,删除的是元组参数 "unpacking"。它在 3.0 中并未被弃用——它在 3.0 中被删除。
-
解决方法不对。应该是
lambda q:(q[0],q[1]) in states(interjay 就是这么描述的)。 -
如果您只是在做您在第一个代码 sn-p 中显示的内容,请使用
def。如果您将 lambda 应用于可迭代的元组,itertools'starmap会自动为您解包,例如,starmap(lambda x, y: x + y, ((1, 2), (3, 4), (5, 6))) # => (3, 7, 11)