Найти в Дзене
ITВопрос

Python. Тернарные операторы

Оглавление

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

  1. Что такое тернарный оператор?
  2. Какой у него синтаксис?
  3. Какой алгоритм работы?
  4. Как его использовать?

Что такое тернарный оператор?

Тернарный оператор (тернарная условная операция) - оператор (операция), который возвращает свой второй или третий операнд в зависимости от результатов логического выражения.

Тернарный оператор появился в Python в версии 2.5.

Какой у него синтаксис?

Тернарный оператор в Python имеет следующий синтаксис:

x = true_value if condition else false_value

true_value - операнд возвращающийся при положительном результате логического выражения;

condition - логическое выражение (условие);

false_value - операнд возвращающийся при отрицательном результате логического выражения;

Какой алгоритм работы?

Для ответа на данный вопрос нам понадобиться простой тернарный оператор.

num = a if a > 0 else b

Алгоритм работы тернарного оператора не отличается от алгоритма условного оператора:

  1. Вычисляется логическое выражение (в нашем случае a > 0);
  2. Если логическое выражение истинно (true), то переменной num присваивается a, в противном случае - присваивается b.
Блок-схема условного оператора if
Блок-схема условного оператора if

Как его использовать?

Существует несколько методов использования тернарного оператора.

Метод 1. Простой

Код программы:

# Исходные данные
a, b = 7, 10
# Использование тернарного оператора простым методом
num = a if (a > 0) and (b > 10) else b
# Вывод результата
print(num)

Результат выполнения кода:

10

Примечание: В тернарных операторах нет возможности использовать конструкцию if-elif-else.

Метод 2. Использование кортежей

Код программы:

# Исходные данные
a, b = 7, 10
# Использование кортежа
num = (b, a) [a < b]
# Вывод результата
print(num)

Результат выполнения кода:

7

Метод 3. Использование словаря

Код программы:

# Исходные данные
a, b = 7, 10
# Использование словаря
num = {True: a, False: b}[a < b]
# Вывод результата
print(num)

Результат выполнения кода:

7

Метод 4. Использование лямбды (lambda)

Код программы:

# Исходные данные
a, b = 7, 10
# Использование lambda
num = (lambda: b, lambda: a)[a > b]()
# Вывод результата
print(num)

Результат выполнения кода:

10

Метод 5. Использование вложенного тернарного оператора

Код программы 1:

# Исходные данные
a, b, c = 1, 5, 11
# Использование вложенного тернарного оператора
max_num = a if a > b else c if c > b else b
min_num = a if a < b else c if c < b else b

# Вывод результата
print('Максимальное: ', max_num, '\n', 'Минимальное: ', min_num)

Результат выполнения кода 1:

Максимальное: 11
Минимальное: 1