Mi Diario Python

Modulo bisect en python (listas ordenadas)

Modulo Bisect
Modulo Bisect

El módulo bisect proporciona funciones para insertar elementos en listas ordenadas, muy útil a la hora de trabajar con listas en python.

Este módulo implementa un algoritmo que inserta elementos en una lista y mantiene el orden establecido.

Primero que nada, decir que para ordenar una lista se pueden utilizar los métodos siguientes:

>>>num = [6, 2, 5, 8, 11, 3]
>>>print sorted(num) #Este método no modifica la lista num

[2, 3, 5, 6, 8, 11]

>>>letras = ["o", "b", "a", "c", "i", "j"]
>>>letras.sort() #Este método si modifica la lista letras

>>>print letras
["a", "b", "c", "i", "j", "o"]

Ejemplos: Uso del modulo bisect para insertar elementos en una lista ordenada insort(lista, item) inserta elementos en la lista manteniendo el orden.

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import bisect

list = [10, 20, 30]

bisect.insort(list, 25)
bisect.insort(list, 15)

print list

Esto retorna:

[10, 15, 20, 25, 30]


Ejemplo: Uso del modulo bisect para saber el índice del elemento a insertar. La lista no se modifica.

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import bisect

list = [10, 20, 30]

print list
print bisect.bisect(list, 25)
print bisect.bisect(list, 15)

Esto retorna:

[10, 20, 30]
2
1


OTRAS FUNCIONES (bisect_left y bisect_right)

bisect_left -- Devuelve el lugar más a la izquierda en la lista ordenada para insertar el elemento dado


bisect_right -- Devuelve el lugar más a la derecha en la lista ordenada para insertar el elemento dado

Ejemplos:

>>>import bisect
>>>bisect.bisect_left([1, 2, 3], 2) #El índice más a la izquierda
1

>>>bisect.bisect_right([1, 2, 3], 2) #El índice más a la derecha
2

Si alguien tiene algún dato más sobre el módulo bisect para aportar, estaría bueno dejaran sus comentarios. Gracias

Salir de la versión móvil