¿Por qué existen tanto insort_left como insort_right ? ¿No es siempre el mismo resultado ya que los elementos son iguales?
>>> import bisect >>> foo = [1,2,3] >>> >>> bisect.insort_left(foo, 1) >>> foo [1, 1, 2, 3] >>> >>> bisect.insort_right(foo, 1) >>> foo [1, 1, 1, 2, 3]Los objetos pueden ser equivalentes sin ser idénticos.
>>> bisect.insort_left(foo, 1.0) >>> foo [1.0, 1, 1, 1, 2, 3] >>> >>> bisect.insort_right(foo, 1.0) >>> foo [1.0, 1, 1, 1, 1.0, 2, 3]Para la mayoría de los propósitos, los resultados son indistinguibles, pero hay casos en los que puede ser importante, particularmente cuando se usa el argumento key= opcional.
¿Entiende la diferencia entre clasificar algoritmos que están o no garantizados como " estables "? Si no, haz clic en el enlace ;-)
ys = [] for x in xs: bisect.insort_right(ys, x) llena ys con un tipo estable de entradas xs , pero usar insort_left() en su lugar no lo haría.