Hvordan få tegn på heltall i Python


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)

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *