Estoy refactorizando una función que, dada una serie de puntos finales que implícitamente definen intervalos, comprueba si se incluye un número en el intervalo, y luego devuelve el correspondiente (no relacionado de ninguna manera computable) El código que ahora se encarga de la obra es:Python: mapeo de intervalos a valores
if p <= 100:
return 0
elif p > 100 and p <= 300:
return 1
elif p > 300 and p <= 500:
return 2
elif p > 500 and p <= 800:
return 3
elif p > 800 and p <= 1000:
return 4
elif p > 1000:
return 5
que es la OMI bastante horrible, y le falta en que tanto los intervalos y los valores de retorno están codificados. Cualquier uso de cualquier estructura de datos es, por supuesto, posible.
+1 Me gusta esto. Tu aprendes algo nuevo cada dia. – kjfletch
+1: ¡increíble! –
Verdaderamente impresionante. Super clean, y creo muy rápido también. También se puede extender fácilmente en caso de que uno necesite un pedido no natural u otra cosa a cambio, como una cadena: import bisect n = bisección.bisect_left ([100,300,500,800,1000], p) a = ["ausente", "bajo", "promedio", "alto", "muy alto", "extremo"] a [n] – Agos