#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.

Publicado el 20 mayo, 2008 en modulos, python. Añade a favoritos el enlace permanente. 1 comentario.

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

Deja un comentario

Fill in your details below or click an icon to log in:

Logo de WordPress.com

You are commenting using your WordPress.com account. Log Out / Cambiar )

Twitter picture

You are commenting using your Twitter account. Log Out / Cambiar )

Facebook photo

You are commenting using your Facebook account. Log Out / Cambiar )

Connecting to %s

Seguir

Get every new post delivered to your Inbox.

Únete a otros 420 seguidores