Сравнение строки с несколькими элементами в Python
Я пытаюсь сравнить строку с именем facility с несколькими возможными строками, чтобы проверить, является ли она допустимой. Допустимые строки:
facility
auth, authpriv, daemon, cron, ftp, lpr, kern, mail, news, syslog, user, uucp, local0, ... , local7
Есть ли эффективный способ сделать это, кроме:
if facility == "auth" or facility == "authpriv" ...
Переведено автоматически
Ответ 1
Если, OTOH, ваш список строк действительно ужасно длинный, используйте set:
accepted_strings = {'auth', 'authpriv', 'daemon'}if facility in accepted_strings: do_stuff()
Тестирование на локализацию в наборе в среднем составляет O(1).
Ответ 2
Если ваш список строк не становится ужасно длинным, вероятно, лучше всего подойдет что-то вроде этого:
accepted_strings = ['auth', 'authpriv', 'daemon'] # etc etc if facility in accepted_strings: do_stuff()
Ответ 3
Чтобы эффективно проверить, соответствует ли строка одному из многих, используйте это:
allowed = set(('a', 'b', 'c'))if foo in allowed: bar()
set()это хэшированные, неупорядоченные коллекции элементов, оптимизированные для определения, есть ли в них данный элемент.
set()