【问题标题】:Python multiple comparisons style?Python多重比较风格?
【发布时间】:2011-07-18 06:20:53
【问题描述】:

我想知道是否有办法以更紧凑的方式执行以下操作:

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

问题是我在 if 语句中有不止 4 个比较,而且它开始看起来相当长、模棱两可和丑陋。有什么想法吗?

【问题讨论】:

    标签: python coding-style comparison readability


    【解决方案1】:

    这个怎么样:

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

    我一直觉得简单而优雅。

    【讨论】:

    • 通常的 Python 样式不会在括号周围放置空格。 @Brent 说得对,但出于某种原因将其删除。
    • 正是我想要的,谢谢,我的代码现在看起来好多了:)
    • @GlennMaynard:感谢 pep-8 的提醒。就个人而言,我发现括号内的空格更清晰,但我应该记得在示例中将它们省略。
    【解决方案2】:

    “如果文本输入”的答案很好,但如果您的文本字符串符合模式,您可能还会考虑 re(正则表达式)包。 例如,从字面上看,“文本”后跟一个数字将是一个简单的正则表达式。

    这是一个适用于“文本”后跟数字的示例。 \Z 匹配字符串的结尾,\d 一个数字。

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

    【讨论】:

    • 现在更像了。 ;-)(实际上你不需要!= None 部分,顺便说一句。)
    • 你说得对,它不需要 != None。经过多年从一种语言跳到另一种语言后,我养成了过度指定的习惯。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-10
    • 2011-04-17
    • 1970-01-01
    • 2014-06-03
    • 1970-01-01
    • 2022-09-23
    • 1970-01-01
    相关资源
    最近更新 更多