Jak uzyskać znak liczby całkowitej w Pythonie


Najlepsza odpowiedź

from math import copysign

sign = lambda x : copysign(1, x)

zwróci -1 dla znaku minus i +1 dla znaku dodatniego. możesz zamienić 1 na 1., aby uzyskać wynik zmiennoprzecinkowy

sign = lambda x : (x >> 63) +1

sign(10) # 1

sign(-32) #0

sign(o) #1

sign(10**15) #1L

jeśli masz tylko liczby, które można przedstawić jako 32 liczby całkowite, wystarczy zrobić x >> 31, ale wtedy otrzymasz liczby większe niż jeden dla liczb powyżej 32 bity (465662 dla znaku (10 ** 15)). Możesz także zrobić x >> 128, aby być bezpieczniejszym

Odpowiedź

Oto jedna linijka! sign = lambda a: (a>0) - (a<0) LUB sign = lambda a: (a>>127)|(not not a) LUB sign = lambda a: 1 if a>0 else -1 if a<0 else 0 [używając if-else, OP nie pytał o to tylko dla czytelników]

Wszystkie rozwiązania działają zarówno w Pythonie2, jak i 3 przypadkach testowych

print sign(12)

print sign(0)

print sign(-13)

print sign(-0)

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *