我想知道是否有一种方法做以下更紧凑的风格:Python多重比较风格?
if (text == "Text1" or text=="Text2" or text=="Text3" or text=="Text4"):
do_something()
问题是我已经不仅仅是4比较多的if语句,它的开始看起来比较长,暧昧,而且很丑。有任何想法吗?
我想知道是否有一种方法做以下更紧凑的风格:Python多重比较风格?
if (text == "Text1" or text=="Text2" or text=="Text3" or text=="Text4"):
do_something()
问题是我已经不仅仅是4比较多的if语句,它的开始看起来比较长,暧昧,而且很丑。有任何想法吗?
如何:
if text in ('Text1', 'Text2', 'Text3', 'Text4'):
do_something()
我总是发现,古朴典雅。
“if if text in answer”是好的,但如果您的文本字符串符合模式,您可能还会考虑re(正则表达式)包。例如,从字面上看,“文本”后跟一个数字就是一个简单的正则表达式。
下面是一个适用于“文本”后跟数字的示例。 \ Z匹配字符串的结尾,\ d一个数字。
if re.match('Text\d\Z', text):
do_something()
通常的Python风格不会在圆括号周围放置空格。 @布伦特说得对,但由于某种原因将其删除。 – 2011-03-18 15:27:47
正是我在找什么,谢谢你,我的代码现在看起来好多了:) – Symon 2011-03-18 15:46:50
@GlennMaynard:感谢pep-8提醒。就我个人而言,我发现在parens内部有空间可以更清晰地看到,但我应该记住要把它们留在例子中。 – 2011-03-18 22:21:14