web-dev-qa-db-ja.com

Python lambdaはタプル引数を受け入れません

LinuxとWindowsを搭載した2台のPCでPyDev v2.6プラグインを備えたEclipse SDK v3.6を実行しています。

(例)のように、タプルを引数として渡します:

foo = lambda (x,y): (y,x)
print (foo((1,2)))

これはLinuxで動作し、次のような結果になります。

(2,1)

Windowsではエラーが発生します。

foo = lambda (x,y): (y,x)
             ^
SyntaxError: invalid syntax

問題を解決するには?

45
Dmitry

おそらく、WindowsではPython 3.x、LinuxではPython 2.xを実行しています。タプルパラメータをアンパックする機能は、Python 3:削除されました PEP 311 を参照してください。

代わりに手動でタプルを解凍できます。これは、Python 2.xと3.xの両方で機能します。

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

または:

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