【问题标题】:one-liner-return with 3 if-statements [duplicate]带有 3 个 if 语句的单行返回 [重复]
【发布时间】:2020-10-30 10:45:31
【问题描述】:

我在 Python 中有以下代码:

def show_sequence(n):
    if n > 0:
        return "+".join((str(i) for i in range(n+1))) + " = %d" %(sum(range(n+1)))
    elif n == 0:
        return "0=0"
    else:
        return str(n) + "<0"

问题:如果有 3 个 if 语句,是否有将所有行放入一个 return 语句的语法正确方法? 我知道它适用于一个 if-& else-statement,但我是 one-liner 的粉丝,并且我自己已经问过这个问题好几次了。

【问题讨论】:

  • 只有当你想要一个荒谬的长而难以阅读的行而不是有意义的代码时。
  • 我知道,这是一个清晰编码的坏例子,但我不知道语法应该是什么样子。已经尝试使用“或”,但它不起作用
  • return "+".join(...) if n &gt; 0 else "0=0" if n == 0 else str(n) + "&lt;0"。 (但如果其他人必须阅读您的代码,请不要对他们造成这种语法滥用)。
  • 我不会把所有东西都放在一条线上,但你也可以很容易地将n &gt; 0n == 0 概括为一个n &gt;= 0 案例,如"+".join([0]) == "0"sum([0]) == 0。跨度>

标签: python


【解决方案1】:

你可以用这个:

result = True if a==b else False

【讨论】:

    【解决方案2】:

    内联if-statements 可以这样链接:

    "a" if 0 else "b" if 0 else "c"
    

    (将0s 替换为1s 以查看返回值变化)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-13
      • 1970-01-01
      • 1970-01-01
      • 2016-11-08
      • 1970-01-01
      • 2020-05-01
      • 2016-07-25
      • 2021-10-08
      相关资源
      最近更新 更多