196

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

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

4

4 回答 4

328

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

i = 5 if a > 7 else 0

翻译成

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

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

在这个最近的 SO question 中,比在 python 中使用 if-else 语句更好的方式详细讨论了可读性问题。

它还包含完成相同任务的各种其他巧妙(并且有些模糊)的方法。仅基于这些帖子就值得一读。

于 2012-07-17T19:15:52.180 回答
68

Pythonif可以用作三元运算符

>>> 'true' if True else 'false'
'true'
>>> 'true' if False else 'false'
'false'
于 2012-07-17T19:15:16.787 回答
41

仅用作值:

x = 3 if a==2 else 0

或者

return 3 if a==2 else 0
于 2012-07-17T19:14:57.460 回答
28

有条件表达式:

a if cond else b

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

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

if something: somefunc()
else: otherfunc()

但这不鼓励作为格式样式的问题。

于 2012-07-17T19:16:21.357 回答