将一个简单的if-then-else语句放在一行中

可能的重复: Python三元操作符

我刚刚开始接触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)
解决办法

这更像是一个三元运算符的表达,而不是一个if-then,这里是python的语法。

value_when_true if condition else value_when_false

更好的例子:(感谢Burns先生)。

'是的'如果水果=='苹果'否则'不'

现在有了赋值,并与if语法对比

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

vs

fruit = 'Apple'
isApple = False
if fruit == 'Apple' : isApple = True
评论(13)

此外,你仍然可以使用"普通&quot。 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)) 
评论(8)
count = 0 if count == N else N+1

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

评论(0)

一般的三元句法。

value_true if  else value_false

另一种方式可以是。

[value_false, value_true][]

例如

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

这在选择一个分支之前会评估两个分支。如果只评估所选分支,则

[lambda: value_false, lambda: value_true][]()

例如。

count = [lambda:0, lambda:N+1][count==N]()
评论(10)
 if  else 

用你的代码,它将成为。

count = 0 if count == N else N + 1
评论(0)