Стиль множественных сравнений Python? - PullRequest
8 голосов
/ 18 марта 2011

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

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

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

Ответы [ 2 ]

16 голосов
/ 18 марта 2011

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

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

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

7 голосов
/ 18 марта 2011

Хороший ответ "if text in", но вы также можете подумать о пакете re (регулярные выражения), если ваши текстовые строки соответствуют шаблону. Например, если взять пример буквально, «Текст», за которым следует цифра, будет простым регулярным выражением.

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

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