Поставяне на проста декларация if-then-else на един ред

Възможен дубликат: 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.

Питам за общия синтаксис.

Решение

Това'е по-точно израз тернарен оператор, отколкото if-then, ето синтаксиса на python

value_when_true if condition else value_when_false

Подобен пример: (благодарение на Mr. Burns)

'Да' 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
Коментари (13)
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)