ベストアンサー
from math import copysign
sign = lambda x : copysign(1, x)
は、負の符号の場合は-1を返し、正の符号の場合は+1を返します。 1を1に置き換えると、浮動小数点出力を取得できます
sign = lambda x : (x >> 63) +1
sign(10) # 1
sign(-32) #0
sign(o) #1
sign(10**15) #1L
32 intとして表すことができる数値しかない場合は、x >> 31を実行するだけで十分ですが、32を超える数値の場合は1より大きい数値が得られます。ビット(符号(10 ** 15)の場合は465662)。より安全にするためにx >> 128を実行することもできます
回答
ここに1つのライナーがあります! sign = lambda a: (a>0) - (a<0)
またはsign = lambda a: (a>>127)|(not not a)
またはsign = lambda a: 1 if a>0 else -1 if a<0 else 0
[if-elseを使用すると、OPは要求しませんでしたこれは読者向けです]
すべてのソリューションはPython2と3の両方のテストケースで機能しますテストケース
print sign(12)
print sign(0)
print sign(-13)
print sign(-0)