Jak získat znaménko celého čísla v Pythonu


Nejlepší odpověď

from math import copysign

sign = lambda x : copysign(1, x)

vrátí -1 pro záporné znaménko a +1 pro kladné znaménko. můžete nahradit 1 1. Získat výstup s plovoucí desetinnou čárkou

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

sign(10) # 1

sign(-32) #0

sign(o) #1

sign(10**15) #1L

pokud máte pouze čísla, která lze vyjádřit jako 32 ints, bude stačit udělat x >> 31, ale pak získáte čísla větší než jedna pro čísla s více než 32 bitů (465662 pro znaménko (10 ** 15)). Můžete také udělat x >> 128, abyste byli bezpečnější.

Odpovědět

Zde je jedna linka! sign = lambda a: (a>0) - (a<0) NEBO sign = lambda a: (a>>127)|(not not a) NEBO sign = lambda a: 1 if a>0 else -1 if a<0 else 0 [pomocí if-else, OP nepožádal o toto ale pro čtenáře]

Všechna řešení fungují v testovacích případech Python2 i 3

print sign(12)

print sign(0)

print sign(-13)

print sign(-0)

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *