Python lambda не принимает аргумент кортежа - программирование

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

Как решить проблему?

4b9b3361

Ответ 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)