#2 Modulo: bisect

20 05 2008

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.


Acciones

Información

Un comentario

21 05 2008
Facundo Batista

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

Deja un comentario