【问题标题】:How to condense if/else into one line in Python? [duplicate]如何在 Python 中将 if/else 压缩为一行? [复制]
【发布时间】:2012-07-16 18:35:00
【问题描述】:

可能重复:
Python Ternary Operator
Putting a simple if-then statement on one line

有没有办法在 Python 中将 if/else 语句压缩到一行?
我经常看到各种各样的捷径,我怀疑它也可以在这里应用。

【问题讨论】:

标签: python


【解决方案1】:

Python 执行“三元”表达式的方式示例:

i = 5 if a > 7 else 0

翻译成

if a > 7:
   i = 5
else:
   i = 0

这实际上在使用列表推导时派上用场,或者有时在返回语句中,否则我不确定它对创建可读代码有多大帮助。

在最近的这个 SO 问题better way than using if-else statement in python 中详细讨论了可读性问题。

它还包含各种其他聪明(并且有些混淆)方法来完成相同的任务。仅基于这些帖子就值得一读。

【讨论】:

  • 如何在return语句中使用它? return count if (count * (distance < within_radius)) > 0 else (continue)
【解决方案2】:

Python 的if 可以用作ternary operator

>>> 'true' if True else 'false'
'true'
>>> 'true' if False else 'false'
'false'

【讨论】:

  • 只想为此添加“真正的”命令行单行语法。我已经搜索了很多如何做到这一点,但没有一个答案包含此信息: $ python -c "import sys; var=1; [ sys.stdout.write('POS\n') if var>0 else sys. stdout.write('NEG\n')]"
【解决方案3】:

仅用作值:

x = 3 if a==2 else 0

return 3 if a==2 else 0

【讨论】:

  • 这不限于分配。它可以用于任何表达式。
  • 太棒了。这可能是最简单、最疯狂的语法。
【解决方案4】:

有条件表达式:

a if cond else b

但这是一个表达式,而不是一个语句。

在 if 语句中,if(或 elifelse)可以写在与块主体相同的行上,如果块只是类似这样的块:

if something: somefunc()
else: otherfunc()

但由于格式样式问题,不鼓励这样做。

【讨论】:

    猜你喜欢
    • 2018-03-14
    • 2012-12-15
    • 1970-01-01
    • 2019-05-06
    • 2016-03-11
    • 1970-01-01
    • 2017-04-27
    • 2018-07-17
    • 1970-01-01
    相关资源
    最近更新 更多