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

时间:2012-07-17 19:13:36

标签: python

  

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

有没有办法将if / else语句压缩到Python中的一行? 我经常看到各种各样的捷径,并怀疑它也适用于此。

4 个答案:

答案 0 :(得分:131)

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中详细讨论了可读性问题。

它还包含各种其他聪明(以及有些模糊)方法来完成相同的任务。根据这些帖子,值得阅读。

答案 1 :(得分:51)

Python的if可以用作ternary operator

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

答案 2 :(得分:20)

仅用作值:

x = 3 if a==2 else 0

return 3 if a==2 else 0

答案 3 :(得分:13)

有条件表达式:

a if cond else b

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

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

if something: somefunc()
else: otherfunc()

但不鼓励这样做格式化。