Python - Двоичный поиск для поиска элементов списка, соответствующих индексу? - PullRequest
1 голос
/ 09 июля 2020

Итак, я хочу выполнить поиск в списке с помощью двоичного поиска и найти элементы списка, значение которых соответствует номеру индекса. Например, если мой список содержит 2 в индексе 2, я хочу распечатать это значение. Он также должен работать с несколькими значениями. Вот что у меня есть для двоичного поиска:

alist=[4,5,7,9,13,45,34,58,99,125,145]
key=145
"""Search key in alist[start... end - 1]."""
start = 0
end = len(alist)
while start < end:
    mid = (start + end)//2
    if alist[mid] > key:  # this is where we check if the guess is bigger than the key
            end = mid
    elif alist[mid] < key:
            start = mid + 1
    elif alist[mid] == key:
                print (f"you searched for {alist[mid]} and we found it in the index number {alist.index(125)} of the list")
                break
else:
    print ("Not Found!")

Это будет работать только с ключом. Я новичок в python и задаюсь вопросом, как бы я go смог реализовать это.

Ответы [ 2 ]

0 голосов
/ 09 июля 2020

Если я правильно понимаю вашу проблему, вы хотите найти элементы, которые имеют то же значение, что и их порядковый номер, тогда вам нужно пройти по списку и распечатать элементы, используя условие print([i for i in alist if i==alist.index(i)])

0 голосов
/ 09 июля 2020

Если я вас правильно понимаю, я думаю, что это должно работать для вашего оператора печати:

print("you searched for {} and we found it in the index number {} of the list".format(key, mid))

Если вы хотите распечатать его только тогда, когда индекс совпадает со значением, вы можете просто добавить Оператор if:

if key == mid:
    print("you searched for {} and we found it in the index number {} of the list".format(key, mid))

Это ответ на ваш вопрос?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...