← Все вопросы

Как проверить, что переменная равна одному из нескольких значений, без кучи or?

Задан 7 месяцев назад751 просмотров3 ответа
16

У меня получается уродливо:

if day == 'сб' or day == 'вс':
    ...

А если значений штук пять? Писать пять or? Должно же быть короче.

3 ответа

22
✓ Принятый ответ — помог автору

Используй оператор in с коллекцией значений:

if day in ('сб', 'вс'):
    ...

Для пяти значений:

if day in ('пн', 'вт', 'ср', 'чт', 'пт'):
    print('будний')

Читается «если day среди этих». Если проверок много и они в горячем коде — лучше взять set ({'пн', 'вт', ...}), у него проверка на вхождение быстрее на больших объёмах. Для пары значений разницы нет, бери что читабельнее.

Михаил Попов а кортеж или список лучше? () · 7 месяцев назад
Dmitry Permiakou автор: для константного набора привычнее кортеж или set, разницы по сути нет · 7 месяцев назад
Evgeniy Arapov in спасает, спасибо! · 7 месяцев назад
9

if day in {'сб', 'вс'}: — через множество.

5

Через in.

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект