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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir

Te has suscrito correctamente al boletín

Se produjo un error al intentar enviar tu solicitud. Inténtalo de nuevo.

Mi Diario Python will use the information you provide on this form to be in touch with you and to provide updates and marketing.