Тернарный оператор в Python — что? Как? Почему?

В мире программирования возможность упростить код ценна как для его удобочитаемости, так и для эффективности. Одним из инструментов, доступных для этого в Python, является тернарный оператор.

Тернарный оператор Python (или условное выражение) позволяет вам оценивать операторы на основе того, является ли заданное условие истинным или ложным, и все это в одной строке кода. Он может эффективно заменить многострочный оператор if-else, делая ваш код более компактным.

По мере изучения потенциала тернарных операторов Python вы обнаружите, что они могут быть очень полезны для оптимизации ваших программ. Будь то упрощение логики принятия решений или оптимизация кода, эффективное использование тернарных операторов Python может значительно упростить чтение и понимание кода.

Итак, давайте заглянем под капот и посмотрим, что они из себя представляют!

Тернарный оператор в Python — что?  Как?  Почему?

Оглавление

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

Операторы Python Ternary предлагают краткий способ оценки оператора на основе того, является ли условие истинным или ложным, что делает ваш код компактным и более легким для чтения. Некоторые также называют их условными выражениями или условными операторами.

Базовый синтаксис

Тернарный оператор был представлен в Python 2.5 и имеет простую структуру, состоящую из трех операндов:

#demonstrate python ternary operator syntax

result = value_if_true if condition else value_if_false

Этот синтаксис состоит из трех основных частей:

  1. Условие : это логическое выражение, оцениваемое как истинное или ложное,

  2. value_if_true : значение, которое возвращается, если логическое выражение истинно.

  3. value_if_false : значение, которое возвращается, если логическое выражение ложно.

Общие случаи использования

Тернарные операторы или условные выражения часто используются для упрощения коротких операторов if-else в вашем коде. Вот несколько примеров, иллюстрирующих, как вы можете применить тернарный оператор Python:

Пример 1: Присвоение значения на основе условия

 age = 25
 
category = "adult" if age >= 18 else "minor"

В этом примере тернарный оператор Python присваивает категории переменной значение « взрослый » , если возраст больше или равен 18, и « несовершеннолетний » в противном случае.

Если предположить, что мы решили использовать оператор if-else вместо тернарного оператора Python, это будет выглядеть примерно так:

age = 25

if age > 18:
   category = "Adult"
else:
   category = "Minor"

В этом случае мы видим, что использование тернарного оператора делает код более компактным и легко читаемым.

Пример 2: Выбор наименьшего из двух чисел

a = 10
b = 15

smallest = a if a < b else b

Здесь тернарный условный оператор помогает определить наименьшее из двух чисел, возвращая меньшее значение между a и b.

Пример 3: Присвоение минимального значения двух переменных:

num1 = 10
num2 = 20

min_num = num1 if num1 < num2 else num2
print(min_num)

Выход для этого примера будет 10, так как тернарный оператор оценивает условие и возвращает меньшее значение.

Пример 4: Определение четности числа или нечетности:

num = 5

result = "Even" if num % 2 == 0 else "Odd" 
print(result)

Выход для этого примера будет Odd , поскольку условие оценивается как False , а тернарный оператор возвращает соответствующий результат.

Эти примеры демонстрируют, как тернарный оператор Python может сделать ваш код более кратким и удобным для чтения. Используя базовый синтаксис и понимая распространенные варианты использования, вы можете эффективно включить тернарный оператор в свой код Python.

В более практических приложениях вы можете использовать его в сочетании с циклом для проверки, оценки или выполнения операций с данными.

Для более эффективной обработки данных вы можете посмотреть это видео о том, как обрабатывать отсутствующие данные в Python с помощью интерполяции.

Как использовать тернарный оператор Python

Обычный синтаксис тернарного оператора if-else — это лишь один из многих способов реализации тернарного оператора Python. Мы также можем реализовать его, используя общие структуры данных, такие как словари Python, кортежи и списки.

Давайте рассмотрим некоторые из этих методов:

Отображение словаря

Вы можете эмулировать тернарный оператор Python с отображением словаря, чтобы сохранять результаты для различных условий. Это может быть полезно, когда у вас есть конечный набор условий и соответствующих результатов.

Вот пример использования сопоставления словаря для проверки, является ли число четным или нечетным:

#Implement python ternary operator with dictionary mapping

number = 7
result = {True: "Even", False: "Odd"}

is_even = result[number % 2 == 0]

Приведенная выше программа вернет « Odd », так как логическое выражение в скобках оценивается как False.

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

Кортежи Python — это упорядоченная неизменяемая структура данных, которую можно использовать для реализации тернарных операторов. По сути, тернарный оператор кортежа имеет следующий синтаксис:

(condition_is_false, condition_is_true)[condition]

Условие оценивается как True или False , что в Python равно целым числам 1 и o соответственно.

Таким образом, кортеж возвращает любой элемент, соответствующий результирующему индексу. Например, если условие оценивается как True , что равно 1 , код возвращает condition_is true .

В противном случае он оценивается как False, равный 0, и кортеж возвращает condition_is_false . Вот пример ниже:

#Implement ternary operator with tuples

c = False
result = ('a', 'b')[c]

Кортеж будет хранить значение ' a ' в переменной result , поскольку условие оценивается как False. Большинству разработчиков не нравится использовать этот формат для тернарных операторов, поскольку он может немного сбивать с толку, что противоречит цели.

Лямбда-функции

Лямбда-функции — это анонимные однострочные функции, которые можно использовать в качестве альтернативы тернарным операторам. Они позволяют выполнять простые вычисления и возвращать результат на основе заданного условия.

Вот пример использования лямбда-функции для нахождения максимума из двух чисел:

#implement python ternary operator with lambda functions

a, b = 10, 20
max_value = (lambda: a, lambda: b)[a < b]()

Лямбда-функция возвращает a, если условие оценивается как True . В противном случае он возвращает b .

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

Вложенный тернарный оператор — это условное выражение с двумя или более булевыми выражениями. Вы можете создать это, объединив два или более логических условия вместе, чтобы проверить несколько условий.

Мы можем использовать эти типы тернарных операторов для моделирования операторов « elif » и вложенных блоков if-else.

Давайте рассмотрим пример вложенного тернарного оператора Python.

age = 21

#Normal elif statement
if age< 21:
   print('Child')
elif age< 25:
   print ('young adult')
else:
   print('Adult')

#elif statement as a ternary operator
print('Child') if age < 18 else print('Young adult') if age <21 else print ('Old Person')

#Output: 'Young Adult'

Вы можете добавить скобки к тернарному оператору Python, если хотите имитировать вложенный оператор if-else. Однако это не очень хорошая практика, так как тернарный оператор может стать очень длинным и нечитаемым.

В подобных случаях лучше использовать в коде стандартный блок if-else.

Каковы преимущества тернарного оператора Python?

Есть много преимуществ, которые вы получаете от использования тернарного оператора Python в своем коде. Некоторые из этих преимуществ включают в себя:

Читабельность и краткость кода

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

Это особенно полезно при работе с простыми и понятными условиями. Ваш код может быть более читабельным и понятным, поскольку он уменьшает потребность в нескольких строках операторов if-else.

Вопросы производительности

Хотя тернарный оператор может привести к более компактному коду, его влияние на производительность обычно минимально. Интерпретатор Python предназначен для оптимизации выполнения кода, а это означает, что как тернарный оператор, так и операторы if-else обычно имеют схожие характеристики производительности.

При написании кода на Python отдавайте предпочтение удобочитаемости и ремонтопригодности, а не производительности, если только вы не работаете с приложениями, критически важными для производительности.

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

Недостатки тернарного оператора Python

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

Вот некоторые из этих недостатков:

Вложенные тернарные операторы могут стать сложными

В некоторых случаях тернарный оператор может сделать код менее читаемым, особенно при использовании сложных или вложенных условий. В этих ситуациях включение обычных операторов if-else может быть более подходящим для обеспечения ясности кода.

Это особенно верно, когда вы пытаетесь заменить вложенный оператор if-else тернарным оператором. Это редко приводит к чистому коду.

Каждый операнд является выражением

Все операнды или возвращаемые значения в тернарном операторе Python являются выражениями, а не операторами. Попытка использовать оператор присваивания внутри синтаксиса тернарного оператора приведет к синтаксической ошибке.

Вы можете проверить пример этого в коде ниже.

'Adult' if True else x = 44

Как вы можете видеть ниже, это приводит к синтаксической ошибке. В подобных случаях вместо условного оператора следует использовать блок if-else.

Тернарный оператор в Python — что?  Как?  Почему?

Лучшие практики и советы

При использовании тернарного оператора в Python есть несколько рекомендаций и советов, которые помогут вам писать чистый, эффективный и удобочитаемый код.

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

Если вы обнаружите, что столкнулись со сложным условием, лучше вместо этого использовать обычный оператор if-else.

#demonstrate nested ternary operator
# Good example 
result = "positive" if number >= 0 else "negative" 


# Bad example 
result = (a + b if (x > 10 and y > 20) else c + d) if (z > 30 and p > 40) else ...

Во-вторых, избегайте вложения нескольких тернарных операторов, что может привести к запутанному и нечитаемому коду. Как и в случае со сложными условиями, рассмотрите возможность использования оператора if-else для большей удобочитаемости.

# Good example 

x = A if condition1 else B if condition2 else C 

# Bad example 
x = A if condition1 else (B if condition2 else (C if condition3 else ...)) 

Наконец, помните о подходящих вариантах использования тернарного оператора. Он больше всего подходит для простых однострочных заданий, когда и условие, и результат легко понять.

Если ваш код включает более сложную логику, циклы или множественные присваивания, лучше придерживаться традиционных операторов if-else.

Часто задаваемые вопросы о тернарных операторах Python

Вот несколько вопросов, которые обычно задают нам новые программисты о тернарных операторах:

Как вы используете тернарный оператор в операторе return в Python?

Вы можете использовать тернарный оператор Python в операторе возврата функции. Все, что вам нужно сделать, это добавить его в оператор return.

Вот пример:

#program to check cheese age

def is_legal(age):
  return 'legal' if age > 18 else 'Not legal'

Тернарный оператор быстрее, чем оператор if-else в Python?

Нет, у обоих схожие ТТХ. Тернарный оператор и оператор if-else имеют временную сложность O(1).

Leave a Comment

Расчет недельных продаж с помощью DAX в LuckyTemplates

Расчет недельных продаж с помощью DAX в LuckyTemplates

В этом руководстве показано, как в конечном итоге можно рассчитать разницу между еженедельными результатами продаж с помощью DAX в LuckyTemplates.

Что такое self в Python: примеры из реального мира

Что такое self в Python: примеры из реального мира

Что такое self в Python: примеры из реального мира

Как сохранить и загрузить файл RDS в R

Как сохранить и загрузить файл RDS в R

Вы узнаете, как сохранять и загружать объекты из файла .rds в R. В этом блоге также рассказывается, как импортировать объекты из R в LuckyTemplates.

Новый взгляд на первые N рабочих дней — решение для языка кодирования DAX

Новый взгляд на первые N рабочих дней — решение для языка кодирования DAX

В этом руководстве по языку программирования DAX вы узнаете, как использовать функцию GENERATE и как динамически изменять название меры.

Продемонстрируйте идеи с помощью метода многопоточных динамических визуализаций в LuckyTemplates

Продемонстрируйте идеи с помощью метода многопоточных динамических визуализаций в LuckyTemplates

В этом учебном пособии рассказывается, как использовать технику многопоточных динамических визуализаций для создания аналитических сведений из динамических визуализаций данных в ваших отчетах.

Введение в фильтрацию контекста в LuckyTemplates

Введение в фильтрацию контекста в LuckyTemplates

В этой статье я пройдусь по контексту фильтра. Контекст фильтра — одна из основных тем, с которой должен ознакомиться любой пользователь LuckyTemplates.

Лучшие советы по использованию приложений в онлайн-службе LuckyTemplates

Лучшие советы по использованию приложений в онлайн-службе LuckyTemplates

Я хочу показать, как онлайн-служба LuckyTemplates Apps может помочь в управлении различными отчетами и аналитическими данными, созданными из различных источников.

Анализ изменений маржи прибыли с течением времени — аналитика с LuckyTemplates и DAX

Анализ изменений маржи прибыли с течением времени — аналитика с LuckyTemplates и DAX

Узнайте, как рассчитать изменения вашей прибыли, используя такие методы, как разветвление показателей и объединение формул DAX в LuckyTemplates.

Идеи материализации кэшей данных в DAX Studio

Идеи материализации кэшей данных в DAX Studio

В этом руководстве будут обсуждаться идеи материализации кэшей данных и то, как они влияют на производительность DAX при предоставлении результатов.

Бизнес-отчетность с использованием LuckyTemplates

Бизнес-отчетность с использованием LuckyTemplates

Если вы все еще используете Excel до сих пор, то сейчас самое подходящее время, чтобы начать использовать LuckyTemplates для своих бизнес-отчетов.