So erhalten Sie ein Ganzzahlzeichen in Python


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)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.