在一行上添加一个简单的if-then-else语句

时间:2010-05-10 12:58:04

标签: python syntax if-statement

  

可能重复:
  Python Ternary Operator

我刚刚进入Python,我非常喜欢语法的简洁性。但是,有一种更简单的方式来编写if - then - else语句,以便它适合一行吗?

例如:

if count == N:
    count = 0
else:
    count = N + 1

有没有更简单的方法来写这个?我的意思是,在Objective-C中我会把它写成:

count = count == N ? 0 : count + 1;

Python有类似内容吗?

更新

我知道在这种情况下我可以使用count == (count + 1) % N

我在询问一般语法。

5 个答案:

答案 0 :(得分:1273)

那更具体的是ternary operator表达式而不是if-then,这里是python语法

value_when_true if condition else value_when_false

更好的例子:(感谢Mr. Burns

'Yes' if fruit == 'Apple' else 'No'

现在使用if语法分配和对比

fruit = 'Apple'
isApple = True if fruit == 'Apple' else False

<强> VS

fruit = 'Apple'
isApple = False
if fruit == 'Apple' : isApple = True

答案 1 :(得分:137)

此外,您仍然可以使用“普通”if语法并将其与冒号分隔成一行。

if i > 3: print("We are done.")

field_plural = None
if field_plural is not None: print("insert into testtable(plural) '{0}'".format(field_plural)) 

答案 2 :(得分:115)

count = 0 if count == N else N+1

- 三元运算符。虽然我说你的解决方案比这更具可读性。

答案 3 :(得分:90)

一般三元句法:

value_true if <test> else value_false

另一种方式可以是:

[value_false, value_true][<test>]

e.g:

count = [0,N+1][count==N]

在选择之前评估两个分支。仅评估所选分支:

[lambda: value_false, lambda: value_true][<test>]()

e.g:

count = [lambda:0, lambda:N+1][count==N]()

答案 4 :(得分:18)

<execute-test-successful-condition> if <test> else <execute-test-fail-condition>

将使用您的代码段,

count = 0 if count == N else N + 1