Cum se obține semnul întregului în Python


Cel mai bun răspuns

from math import copysign

sign = lambda x : copysign(1, x)

va returna -1 pentru semnul negativ și +1 pentru semnul pozitiv. puteți înlocui 1 cu 1. pentru a obține o ieșire în virgulă mobilă

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

sign(10) # 1

sign(-32) #0

sign(o) #1

sign(10**15) #1L

dacă aveți numai numere care pot fi reprezentate ca 32 de inți, va fi suficient să faceți x >> 31, dar atunci veți obține numere mai mari decât unul pentru numerele cu mai mult de 32 biți (465662 pentru semn (10 ** 15)). De asemenea, puteți face x >> 128 pentru a fi mai sigur

Răspundeți

Iată o linie! sign = lambda a: (a>0) - (a<0) SAU sign = lambda a: (a>>127)|(not not a) SAU sign = lambda a: 1 if a>0 else -1 if a<0 else 0 [folosind if-else, OP nu a cerut asta, dar pentru cititori]

Toate soluțiile funcționează atât în ​​Python2 cât și în 3 cazuri de testare

print sign(12)

print sign(0)

print sign(-13)

print sign(-0)

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *