Странное поведение bisect.insort в Python 3 - PullRequest
0 голосов
/ 25 марта 2020

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] не это.

Почему он производит это результат?

1 Ответ

2 голосов
/ 25 марта 2020

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

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

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

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

...