Когда вы выполняете что-то вроде "test" в
, где a
- это список, выполняет ли python последовательный поиск в list или создает представление хеш-таблицы для оптимизировать поиск? В приложении, которое мне нужно, я буду выполнять много поисков по списку, поэтому было бы лучше сделать что-то вроде b = set (a)
, а затем "test" в b
? Также обратите внимание, что список значений, который у меня будет, не будет содержать повторяющихся данных, и меня не волнует порядок их расположения; Мне просто нужно проверить наличие значения.
Я думаю, что было бы лучше пойти с установленной реализацией. Я точно знаю, что наборы имеют O (1) время поиска. Я думаю, что списки занимают O (N) время поиска. Но даже если списки также являются O (1), вы ничего не потеряете, переключившись на наборы.
Кроме того, наборы не допускают дублирования значений. Это также сделает вашу программу немного более эффективной в использовании памяти