Modulo bisect en python (listas ordenadas)
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
Deja una respuesta