как работает поиск в python?

Чтобы сделать мой вопрос ясным, если у меня есть массив a, как Out [123]: [1, 3, 4, 6, 9, 10, 54] Когда я пытаюсь выполнить поиск номеров в списке, searchsort возвращает правильное значение, но когда Я пытаюсь что-то не в списке, он возвращает абсурдное значение

вот некоторые из результатов

In [131]: a Out[131]: [1, 3, 4, 6, 9, 10, 54] In [132]: searchsorted(a,1) Out[132]: 0 In [133]: searchsorted(a,6) Out[133]: 3 In [134]: searchsorted(a,[9,54,1]) Out[134]: array([4, 6, 0]) In [135]: searchsorted(a,[9,54,1,0]) Out[135]: array([4, 6, 0, 0]) ***> # here 0 is not in the list, but turns up @ position 0*** In [136]: searchsorted(a,740) Out[136]: 7 ***> # here 0 is not in the list, but turns up @ position 7*** 

почему это происходит?

3 Solutions collect form web for “как работает поиск в python?”

searchsorted сообщает вам, где элемент принадлежит гарантийному заказу:

Найти индексы в отсортированном массиве а так , чтобы, если соответствующие элементы из v были вставлены перед индексами, порядок а сохранится.

вставка 740 в положение 7 сохранит порядок, как бы вставляя 0 в положение 0.

из документов в нем указано, что он использует двоичный поиск для определения точки вставки элемента в отсортированном списке.

слово «точка вставки» означает, что если элемент I вставлен в индекс точки вставки N в отсортированном массиве A, массив A останется отсортированным с новым элементом I.

ваши примеры, например [9, 54, 1] , бессмысленны, поскольку массив не отсортирован.

вы можете использовать модуль bisect в python, чтобы сделать то же самое, без numpy.

searchsorted не говорит вам, где это происходит, он говорит вам, куда нужно идти, чтобы отсортировать список.

Таким образом, 0 должно быть вставлено в позицию 0, до 1 . Аналогично, 740 необходимо вставить в положение 7 за пределами текущего конца списка.

Вы можете это увидеть, прочитав здесь документы:

numpy.searchsorted (a, v, side = 'left', sorter = None)

Найдите индексы, где элементы должны быть вставлены для поддержания порядка.

Найти индексы в отсортированном массиве а так, чтобы, если соответствующие элементы из v были вставлены перед индексами, порядок а сохранится.

  • алгоритм lookahead в Python
  • Python: проверьте, является ли какой-либо элемент списка ключевым в словаре
  • Найти значение min в массиве> 0
  • Python Поиск строки и печать файла, в котором он находится
  • Есть ли сценарий для управления / поиска фрагментов python, который понимает код python, например nullege.com?
  • Как реализовать двоичное дерево?
  • В Python, как проверить, содержит ли строка только определенные символы?
  • В чем разница между re.search и re.match Python?
  • Python - лучший язык программирования в мире.