首页 文章

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

提问于
浏览
588

可能重复:Python三元运算符

我刚刚进入Python,我真的很喜欢语法的简洁性 . 但是,是否有更简单的方法来编写 if - then - else 语句,以便它适合一行?

例如:

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

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

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

Python有类似的东西吗?

Update

我知道在这个例子中我可以使用 count == (count + 1) % N .

我问的是一般语法 .

5 回答

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

    它会变成你的代码片段,

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

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

    value_when_true if condition else value_when_false
    

    Better Example: (谢谢Mr. Burns

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

    Now with assignment and contrast with if syntax

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

    vs

    fruit = 'Apple'
    isApple = False
    if fruit == 'Apple' : isApple = True
    
  • 110
    count = 0 if count == N else N+1
    
    • 三元运算符 . 虽然我说你的解决方案比这更具可读性 .
  • 84

    此外,您仍然可以使用“普通”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))
    
  • 17

    一般三元语法:

    value_true if <test> else value_false
    

    另一种方式可以是:

    [value_false, value_true][<test>]
    

    例如:

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

    这会在选择之前评估两个分支 . 仅评估所选分支:

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

    例如 . :

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

相关问题