Сравнение строки с несколькими элементами в Python
Я пытаюсь сравнить строку с именем facility
с несколькими возможными строками, чтобы проверить, действительно ли она. Допустимые строки:
auth, authpriv, daemon, cron, ftp, lpr, kern, mail, news, syslog, user, uucp, local0, ... , local7
Есть ли эффективный способ сделать это, кроме:
if facility == "auth" or facility == "authpriv" ...
Ответы
Ответ 1
Если OTOH, ваш список строк действительно ужасно длинный, используйте набор:
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()
- хешированные неупорядоченные коллекции элементов, оптимизированные для определения того, находится ли в них данный элемент.