Възможен дубликат: 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
count = 0 if count == N else N+1
- тройният оператор. Въпреки че бих казал, че вашето решение е по-четливо от това.
Общ синтаксис на тройките:
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]()