Странное поведение bisect.insort в Python 3

Python 3.8.2 в Linux. Если я создам list и просто использую insort поверх него, я получу ожидаемый результат; с другой стороны, если я изменю порядок элементов в контейнере перед вызовом insort, это произойдет

>>> a = list(range(10))
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a.reverse()
>>> a
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
>>> bisect.insort(a,6)
>>> a
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 6]

Я ожидал [9, 8, 7, 6, 6, 5, 4, 3, 2, 1, 0] не этого.

Почему это дает такой результат?


person xelp    schedule 25.03.2020    source источник
comment
bisect нужен упорядоченный список.   -  person Daniel    schedule 25.03.2020
comment
@Daniel a заказан, только в обратном порядке   -  person xelp    schedule 25.03.2020
comment
Я предполагаю, что под сортировкой (согласно документам) подразумевается: сортировка по возрастанию. Документация по различным функциям (и именам параметров) также намекает на это.   -  person 9769953    schedule 25.03.2020
comment
@00 если это так, то это БОЛЬШАЯ дыра в документах...   -  person xelp    schedule 25.03.2020
comment
Конечно. Вы можете зарегистрировать проблему для этого. Но на данный момент я думаю, что это также предположение, с которым вы будете работать.   -  person 9769953    schedule 25.03.2020
comment
Вы также можете вывести его из самого кода, связанного в документы. Код даже короче, чем полная документация.   -  person 9769953    schedule 25.03.2020


Ответы (1)


из документов:

Этот модуль поддерживает ведение списка в отсортированном порядке без необходимости сортировать список после каждой вставки.

также из документов:

В отличие от функции sorted(), функции bisect() не имеют смысла иметь ключевые или обратные аргументы, потому что это привело бы к неэффективному дизайну (последовательные вызовы функций bisect не «запомнят» все предыдущие поиски ключей). .

person kederrac    schedule 25.03.2020
comment
Я не думаю, что это правильный ответ/описание. вы можете отсортировать кучу чисел с оператором меньше или больше. Этот список отсортирован. - person xelp; 25.03.2020
comment
этот список в обратном порядке немного отличается - person kederrac; 25.03.2020
comment
чем отличается от сортировки с оператором меньше чем? - person xelp; 25.03.2020
comment
@xelp теперь мой ответ лучше? - person kederrac; 25.03.2020
comment
вы также можете посмотреть здесь - person kederrac; 25.03.2020
comment
на данный момент я думаю, что они просто забыли упомянуть ожидаемый порядок (по возрастанию) в документах, а insort действителен только для возрастающих порядков. - person xelp; 25.03.2020