Beste svaret
 from math import copysign 
 sign = lambda x : copysign(1, x) 
returnerer -1 for negativt tegn og +1 for positivt tegn. du kan erstatte 1 med 1. for å få et flytende punktutgang
 sign = lambda x : (x >> 63) +1 
 sign(10) # 1 
 sign(-32) #0 
 sign(o) #1 
 sign(10**15) #1L 
hvis du bare har tall som kan representeres som 32 inter, vil det være tilstrekkelig å gjøre x >> 31, men da får du tall større enn ett for tall med mer enn 32 bits (465662 for skilt (10 ** 15)). Du kan også gjøre x >> 128 for å være tryggere
Svar
 Her er en liners! sign = lambda a: (a>0) - (a<0) ELLER sign = lambda a: (a>>127)|(not not a) ELLER sign = lambda a: 1 if a>0 else -1 if a<0 else 0 [ved bruk av if-else, ba OP ikke om dette men for lesere] 
Alle løsninger fungerer i både Python2 og 3 testtilfeller
 print sign(12) 
 print sign(0) 
 print sign(-13) 
 print sign(-0)