Nejlepší odpověď
from math import copysign
sign = lambda x : copysign(1, x)
vrátí -1 pro záporné znaménko a +1 pro kladné znaménko. můžete nahradit 1 1. Získat výstup s plovoucí desetinnou čárkou
sign = lambda x : (x >> 63) +1
sign(10) # 1
sign(-32) #0
sign(o) #1
sign(10**15) #1L
pokud máte pouze čísla, která lze vyjádřit jako 32 ints, bude stačit udělat x >> 31, ale pak získáte čísla větší než jedna pro čísla s více než 32 bitů (465662 pro znaménko (10 ** 15)). Můžete také udělat x >> 128, abyste byli bezpečnější.
Odpovědět
Zde je jedna linka! sign = lambda a: (a>0) - (a<0)
NEBO sign = lambda a: (a>>127)|(not not a)
NEBO sign = lambda a: 1 if a>0 else -1 if a<0 else 0
[pomocí if-else, OP nepožádal o toto ale pro čtenáře]
Všechna řešení fungují v testovacích případech Python2 i 3
print sign(12)
print sign(0)
print sign(-13)
print sign(-0)