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

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Python Ternary Operator
Putting a simple if-then statement on one line

是否有一种方法可以在Python中将if/else语句压缩到一行?我经常看到各种快捷方式,我怀疑它也适用于这里。


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

1
i = 5 if a > 7 else 0

转化为

1
2
3
4
if a > 7:
   i = 5
else:
   i = 0

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

在最近的这篇文章中详细讨论了可读性问题,所以在python中使用if-else语句比使用if-else语句更好。

它还包含了完成相同任务的其他各种聪明的(有些模糊的)方法。基于这些帖子,值得一读。


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

1
2
3
4
>>> 'true' if True else 'false'
'true'
>>> 'true' if False else 'false'
'false'


仅用于作为一个值:

1
x = 3 if a==2 else 0

1
return 3 if a==2 else 0


有条件表达式:

1
a if cond else b

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

在if语句中,如果block只有一个,则if(或elifelse)可以与block的主体写在同一行:

1
2
if something: somefunc()
else: otherfunc()

但这是不鼓励的形式的问题。