【问题标题】:How to write nested if-elif-else condition in one line? [duplicate]如何在一行中编写嵌套的 if-elif-else 条件? [复制]
【发布时间】:2021-04-21 07:40:00
【问题描述】:

假设我有一个条件检查,例如:

if a > b:
    m = a
else:
    m = b

然后我知道它可以写成一行:

m = a if a > b else b

如果条件检查中也存在elif 语句,如何编写类似的单行表达式?对于类似的东西:

if a > b:
   m = a
elif a > c:
   m = c
else:
   m = b

【问题讨论】:

  • 看到这个:pythoncentral.io/…
  • 沉默的反对者...SMH。
  • 我没有投反对票,但我想这个问题在 SO 中被问了很多次,这就是为什么有人投反对票的原因。
  • 我做这个问题并不是出于恶意,但有时标题无济于事,这就是为什么我没有找到一个平等的问题。此外,当我查看我的问题时,该网站并没有要求我寻找另一个相同的问题
  • 我明白 :) 尝试像这样if elif else one line python按关键字(而不是句子)搜索

标签: python conditional-statements


【解决方案1】:

假设你的条件语句是这样的:

if a > b:
   m = a
elif a > c:
   m = c
else:
   m = b

你可以把它放在单行的嵌套 if-else 中:

m = a if a > b else (c if a > c else b)

在上述语句中,您甚至可以跳过括号(..) 的使用。我添加它是为了解释执行顺序。以下不带括号的代码将返回相同的答案:

m = a if a > b else c if a > c else b

一般来说,对于这样的代码:

if COND_1:
    m = A
elif COND_2:
    m = B
elif COND_3:
    m = C
else:
    m = D

你可以让你的一个衬里嵌套条件语句为:

 m = A if COND_1 else (B if COND_2 else (C if COND_3 else D))

【讨论】:

    【解决方案2】:

    this回答

    value_when_true if 条件 else value_when_false

    'Yes' if fruit == 'Apple' else 'No'
    

    【讨论】:

      【解决方案3】:

      elif 条件的语法如下。

      a = 34
      b = 42
      c = 54
      
      m = a if a > b else (b if b > c else c) 
      print(m)
      

      结果:54

      【讨论】:

        【解决方案4】:

        你可以像这样链接条件:

        m = "a" if CONDITION_1 else "b" if CONDITION_2 else "c"
        

        【讨论】:

        • 有可能,谢谢
        猜你喜欢
        • 2016-08-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-05
        • 2010-12-17
        • 2011-08-15
        • 2021-08-27
        • 2017-01-14
        相关资源
        最近更新 更多