TL; DR:
Да.
Более длинный ответ:
Это не менее эффективно, как @Selcuk упомянул в комментариях:
Разница в производительности связана с накладными расходами реализации, в противном случае они оба O(n)
, тогда как set
операция на самом деле быстрее, чем O(1)
.
Слуховой набор должен сбить вас с толку сначала прочитайте все, и в конце вы увидите set
тестирование членства, вот время:
from timeit import timeit
x = 2
print(timeit(lambda: x in [1, 2, 3], number=10000000))
print(timeit(lambda: x == 1 or x == 2 or x == 3, number=10000000))
Вывод:
2.9532112044043597
3.614175814476062
Так что это означает, что ваш первый Решение с проверкой членства в списке выполняется быстрее, чем несколько or
условий.
Как уже упоминалось @Austin, set
тестирование членства выполняется быстрее.
Так что если мы проверим set
время членства, например, :
from timeit import timeit
x = 2
print(timeit(lambda: x in {1, 2, 3}, number=10000000))
Будет выведено:
2.7767165870317445
Так что set
членство самое быстрое.