如何在Python中将if/else压缩成一行?

Ano*_*nce 102 python

可能重复:
Python三元运算符
在一行上放置一个简单的if-then语句

有没有办法在Python中将if/ else语句压缩到一行?
我经常看到各种快捷方式,并怀疑它也适用于此.

Lev*_*von 153

Python的"三元"表达式的一个例子:

i = 5 if a > 7 else 0
Run Code Online (Sandbox Code Playgroud)

翻译成

if a > 7:
   i = 5
else:
   i = 0
Run Code Online (Sandbox Code Playgroud)

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

在最近的SO问题中详细讨论了可读性问题,而不是在python中使用if-else语句.

它还包含各种其他聪明(并且有些混淆)的方法来完成相同的任务.根据这些帖子,值得一读.

  • 我如何在返回语句中使用它?`返回计数 if (count * (distance < inside_radius)) > 0 else (继续)` (2认同)

slo*_*oth 55

Python if可以用作三元运算符:

>>> 'true' if True else 'false'
'true'
>>> 'true' if False else 'false'
'false'
Run Code Online (Sandbox Code Playgroud)


f p*_*f p 24

仅用于作为值使用:

x = 3 if a==2 else 0
Run Code Online (Sandbox Code Playgroud)

要么

return 3 if a==2 else 0
Run Code Online (Sandbox Code Playgroud)

  • 这不仅限于作业.它可以用在任何表达式中. (3认同)

Bre*_*arn 17

有条件表达式:

a if cond else b
Run Code Online (Sandbox Code Playgroud)

但这是一个表达,而不是一个陈述.

在if语句中,如果块只是一个,则if(或elifelse)可以写在与块体相同的行上:

if something: somefunc()
else: otherfunc()
Run Code Online (Sandbox Code Playgroud)

但作为格式化的问题,这是不鼓励的.