Стиль множественных сравнений Python?

Мне интересно, есть ли способ сделать следующее в более компактном стиле:

if (text == "Text1" or text=="Text2" or text=="Text3" or text=="Text4"):
    do_something()

проблема в том, что у меня есть больше, чем просто 4 сравнения в выражении if, и он начинает выглядеть довольно длинным, двусмысленным и уродливым. Есть идеи?

2 ответов


Как насчет этого:

if text in ( 'Text1', 'Text2', 'Text3', 'Text4' ):
    do_something()

Я всегда находил это простым и элегантным.


ответ" если текст в " хорош, но вы также можете подумать о пакете re (регулярные выражения), если ваши текстовые строки соответствуют шаблону. Например, если взять ваш пример буквально, "текст", за которым следует цифра, будет простым регулярным выражением.

вот пример, который должен работать для "текста", за которым следует цифра. \Z соответствует концу строки, \d-цифре.

if re.match('Text\d\Z', text):
   do_something()