Cómo obtener el signo de un entero en Python


Mejor respuesta

from math import copysign

sign = lambda x : copysign(1, x)

devolverá -1 para el signo negativo y +1 para el signo positivo. puede reemplazar 1 con 1. para obtener una salida de punto flotante

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

sign(10) # 1

sign(-32) #0

sign(o) #1

sign(10**15) #1L

si solo tiene números que se pueden representar como 32 pulgadas, será suficiente hacer x >> 31 pero luego obtendrá números mayores que uno para números con más de 32 bits (465662 para el signo (10 ** 15)). También puede hacer x >> 128 para estar más seguro

Respuesta

¡Aquí hay algunas frases! sign = lambda a: (a>0) - (a<0) O sign = lambda a: (a>>127)|(not not a) O sign = lambda a: 1 if a>0 else -1 if a<0 else 0 [usando if-else, OP no solicitó esto, pero para los lectores]

Todas las soluciones funcionan en Python2 y 3 casos de prueba

print sign(12)

print sign(0)

print sign(-13)

print sign(-0)

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *