Помещение простого оператора if-then-else в одну строку [duplicate]

Минуты mod 60 будут давать часы с оставшимися минутами.

http://www.cafeaulait.org/course/week2/15.html

722
задан NightOwl888 10 February 2018 в 00:44
поделиться

4 ответа

Это более конкретно выражение тернарный оператор , чем выражение if-then, вот синтаксис Python

value_when_true if condition else value_when_false

Лучший пример: (спасибо Мистер Бернс )

'Да' if fruit == 'Apple' else 'Нет

Теперь с присваиванием и контрастом с синтаксисом if

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

vs

fruit = 'Apple'
isApple = False
if fruit == 'Apple' : isApple = True
1436
ответ дан 22 November 2019 в 21:22
поделиться
count = 0 if count == N else N+1

- троичный оператор. Хотя я бы сказал, что ваше решение более читабельно, чем это.

122
ответ дан 22 November 2019 в 21:22
поделиться

Общий троичный синтаксис:

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]()
97
ответ дан 22 November 2019 в 21:22
поделиться
<execute-test-successful-condition> if <test> else <execute-test-fail-condition>

с вашим фрагментом кода он будет выглядеть следующим образом:

count = 0 if count == N else N + 1
20
ответ дан 22 November 2019 в 21:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: