Python lambda не принимает аргумент кортежа
Я использую 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
Как решить проблему?
Ответы
Ответ 1
Вероятно, вы используете Python 3.x для Windows и Python 2.x для Linux. Возможность распаковать параметры кортежа была удалена в 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)