#2 Modulo: bisect

El módulo bisect sirve para mapear números dentro de un rango con algo. Por ejemplo si quiero indicar qué tan grande es un número con palabras, podría hacer algo así:

>>> from bisect import bisect
>>> grado = ['muy chico', 'chico', 'mediano', 'grande', 'muy grande', 'gigante']
>>> rango = [5, 20, 100, 1000, 10000]
>>> def tamano(numero):
... return grado[bisect(rango, numero)]
...
>>> tamano(25)
'mediano'
>>> tamano(-5)
'muy chico'
>>> tamano(156)
'grande'
>>> tamano(1056)
'muy grande'
>>> tamano(26542)
'gigante'
>>>

Lo que está haciendo es ver dónde cae el número que le paso, y devolviéndome la posición de la lista (grado) en la que cae ese número. Ésto puede ser muy útil para hacer comprobaciones de rango, en vez de repetir muchas líneas con:

if 5 <= numero < 20:
... return 'chico'
elif 20 <= numero < 100:
... return 'mediano'

Fuente: la documentación del módulo.

Un pensamiento en “#2 Modulo: bisect

  1. Mirá que piola… nunca se me había ocurrido usarlo de esta manera…

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: