Beste Antwort
 from math import copysign 
 sign = lambda x : copysign(1, x) 
gibt -1 für negatives Vorzeichen und +1 für positives Vorzeichen zurück. Sie können 1 durch 1 ersetzen, um eine Gleitkommaausgabe zu erhalten.
 sign = lambda x : (x >> 63) +1 
 sign(10) # 1 
 sign(-32) #0 
 sign(o) #1 
 sign(10**15) #1L 
Wenn Sie nur Zahlen haben, die als 32 Zoll dargestellt werden können, reicht es aus, x >> 31 auszuführen, aber dann erhalten Sie Zahlen größer als eins für Zahlen mit mehr als 32 Bits (465662 für Vorzeichen (10 ** 15)). Sie können auch x >> 128 ausführen, um sicherer zu sein.
Antwort
 Hier sind ein Liner! sign = lambda a: (a>0) - (a<0) ODER sign = lambda a: (a>>127)|(not not a) ODER sign = lambda a: 1 if a>0 else -1 if a<0 else 0 [mit if-else hat OP nicht gefragt dies nur für Leser] 
Alle Lösungen funktionieren sowohl in Python2- als auch in 3 -Testfällen
 print sign(12) 
 print sign(0) 
 print sign(-13) 
 print sign(-0)