我正在尝试将名为facility
的字符串与多个可能的字符串进行比较,以测试它是否有效。有效字符串是:
auth, authpriv, daemon, cron, ftp, lpr, kern, mail, news, syslog, user, uucp, local0, ... , local7
除了:
之外,还有一种有效的方法吗?if facility == "auth" or facility == "authpriv" ...
答案 0 :(得分:29)
如果,OTOH,你的字符串列表确实很长,请使用集合:
accepted_strings = {'auth', 'authpriv', 'daemon'}
if facility in accepted_strings:
do_stuff()
集合中的遏制测试平均为O(1)。
答案 1 :(得分:10)
除非你的字符串列表变得非常长,否则这样的事情可能是最好的:
accepted_strings = ['auth', 'authpriv', 'daemon'] # etc etc
if facility in accepted_strings:
do_stuff()
答案 2 :(得分:2)
要有效地检查字符串是否与众多字符串匹配,请使用:
allowed = set(('a', 'b', 'c'))
if foo in allowed:
bar()
set()
是经过优化的无条件项目集合,用于确定给定项目是否在其中。