Hoe teken van integer in Python te krijgen


Beste antwoord

from math import copysign

sign = lambda x : copysign(1, x)

retourneert -1 voor een minteken en +1 voor een positief teken. je kunt 1 vervangen door 1. om een ​​uitvoer met drijvende komma te krijgen

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

sign(10) # 1

sign(-32) #0

sign(o) #1

sign(10**15) #1L

als je alleen getallen hebt die kunnen worden weergegeven als 32 ints, is het voldoende om x >> 31 te doen, maar dan krijg je getallen groter dan één voor getallen met meer dan 32 bits (465662 voor teken (10 ** 15)). Je zou ook x >> 128 kunnen doen om veiliger te zijn

Antwoord

Hier zijn one liners! sign = lambda a: (a>0) - (a<0) OF sign = lambda a: (a>>127)|(not not a) OF sign = lambda a: 1 if a>0 else -1 if a<0 else 0 [met if-else, OP vroeg niet om dit maar voor lezers]

Alle oplossingen werken in zowel Python2 als 3 testcases

print sign(12)

print sign(0)

print sign(-13)

print sign(-0)

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *