- Я просто разбирал большой файл, и я создал список, содержащий 42 000 строк/слов. Я хочу запросить [против этого списка], чтобы проверить, принадлежит ли ему данное слово/строка. Так что я задал себе вопрос:Самый эффективный способ поиска/поиска в огромном списке (python)
Что такое самый эффективный способ для такого поиска?
Первый подход состоит в сортировке списка (list.sort()
), а затем просто использовать
>> if word in list: print 'word'
, который действительно тривиальна, и я уверен, что есть лучший способ сделать это. Моя цель - применить быстрый поиск, который определяет, находится ли данная строка в этом списке или нет. Если у вас есть идеи другой структуры данных, они приветствуются. Тем не менее, я хочу избежать более сложных структур данных, таких как Tries и т. Д. Мне интересно услышать идеи (или трюки) о быстрых поисках или любых других библиотечных методах python, которые могли бы выполнять поиск быстрее, чем простой in
.
А также я хочу знать, индекс поиска элемента
Большое спасибо THC4k за подробный ответ. На самом деле я подумывал применить бинарный поиск сам, но, как я вижу, это то, что делает модуль bisect в любом случае, поэтому вы сохранили мое время :). Еще раз спасибо за вашу помощь. – user229269
@ user229269, вы застряли на неправильной части сообщения! Вероятно, вам нужен 'set', а не' list'. –
@Mike Graham Я знаю, что вы говорите, но я боюсь, что могу столкнуться с проблемами памяти, если я использую наборы, считая, что мой список на самом деле является быстро растущим списком слов, который в конечном итоге достигнет 100 000 строк и больше – user229269