13

Однострочное выражение if-then-else

19

У меня есть вопрос о том, как записать конструкцию if-then-else на одном ряду в Python. Я хочу, чтобы код выполнял логику, похожую на следующую:

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

В Objective-C я бы записал это так:

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

Как я могу сделать то же самое в Python, чтобы вся конструкция помещалась в одну строку?

4 ответ(ов)

3

Кроме того, вы всё еще можете использовать "обычный" синтаксис if и объединить его в одну строку с помощью двоеточия.

if i > 3: print("Мы закончили.")

или

field_plural = None
if field_plural is not None: print("insert into testtable(plural) '{0}'".format(field_plural))
1

Выражение count = 0 if count == N else N + 1 использует тернарный оператор для присвоения значения переменной count. Если count равно N, то count будет равно 0; в противном случае — N + 1.

Тем не менее, следует отметить, что ваш вариант может быть более читаемым и понятным для других разработчиков. Использование тернарного оператора иногда делает код менее очевидным, особенно для тех, кто не так хорошо знаком с его синтаксисом.

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]()

Этот подход позволяет избежать ненужных вычислений и вызывать только ту функцию, которая соответствует результату теста.

0

Ваш код может быть переведен на русский язык следующим образом:

count = 0 если count равно N иначе N + 1

Не забудьте учесть, что эта запись является аналогом тернарного оператора, который используется для условного присваивания значений в Python. В вашем примере, если count равно N, то его значение устанавливается в 0, в противном случае оно будет равно N + 1.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь