facility
という文字列を複数の可能な文字列と比較して、有効かどうかをテストしています。有効な文字列は次のとおりです。
auth, authpriv, daemon, cron, ftp, lpr, kern, mail, news, syslog, user, uucp, local0, ... , local7
これを行う効率的な方法はありますか:
if facility == "auth" or facility == "authpriv" ...
OTOH、文字列のリストが本当にひどいほど長い場合は、セットを使用します。
accepted_strings = {'auth', 'authpriv', 'daemon'}
if facility in accepted_strings:
do_stuff()
セット内の包含のテストは、O(1)平均でです。
文字列のリストがひどく長くならない限り、次のようなものがおそらく最善です:
accepted_strings = ['auth', 'authpriv', 'daemon'] # etc etc
if facility in accepted_strings:
do_stuff()
文字列が多くの文字列のいずれかに一致するかどうかを効率的に確認するには、次のようにします。
_allowed = set(('a', 'b', 'c'))
if foo in allowed:
bar()
_
set()
sは、ハッシュされた、順序付けされていないアイテムのコレクションであり、特定のアイテムがアイテム内にあるかどうかを判断するために最適化されています。