Если вы хотите невероятно быстрый тест членства, тогда список - неправильная структура данных.Взгляните на реализацию list_contains
в listobject.c
, строка 437 .Он перебирает список по порядку, сравнивая элемент с каждым элементом по очереди.Чем позже элемент появляется в списке, тем больше времени потребуется для его поиска, и если элемент отсутствует, то весь список должен быть отсканирован.
Используйте взамен set .Наборы реализуются внутренне с помощью хеш-таблицы, поэтому поиск объекта включает в себя вычисление его хеша, а затем сканирование нескольких записей таблицы (обычно только одной).Для конкретного случая поиска строки см. set_lookkey_string
в setobject.c
, строка 156 .