checking_set = set(("a", "b", "c", "d")) # initialisation; do this once
if foo in checking_set: # when you need it
Преимущества: (1) дают набор допустимых значений имя (2) может быть быстрее, если число записей велико
Редактировать некоторые тайминги в ответ на "Обычно гораздо медленнее", когда только "несколько записей" комментарий:
>python -mtimeit -s"ctnr=('a','b','c','d')" "'a' in ctnr"
10000000 loops, best of 3: 0.148 usec per loop
>python -mtimeit -s"ctnr=('a','b','c','d')" "'d' in ctnr"
1000000 loops, best of 3: 0.249 usec per loop
>python -mtimeit -s"ctnr=('a','b','c','d')" "'x' in ctnr"
1000000 loops, best of 3: 0.29 usec per loop
>python -mtimeit -s"ctnr=set(('a','b','c','d'))" "'a' in ctnr"
10000000 loops, best of 3: 0.157 usec per loop
>python -mtimeit -s"ctnr=set(('a','b','c','d'))" "'d' in ctnr"
10000000 loops, best of 3: 0.158 usec per loop
>python -mtimeit -s"ctnr=set(('a','b','c','d'))" "'x' in ctnr"
10000000 loops, best of 3: 0.159 usec per loop
(Python 2.7, Windows XP)
Спасибо! Кроме того, вы совершенно правы в своей ошибке. Оператор назначения был честной ошибкой, другие хорошо знают. –
Я полностью не согласен с '# 1'. Удаление скобок, поскольку она занимает 2 символа, НЕ является хорошей идеей. Если это упрощает чтение, сделайте это – Falmarri
@Falmarri - Добавленные символы - это ненужные шумы, которые уменьшают читаемость. Мне еще нужно увидеть if (...): это проще читать из-за круглых скобок –