Самый простой тройной оператор х если с остальными y
состоит из трех операндов х
, C
и y
Отказ Это выражение с возвращаемой стоимостью. Темнарный оператор возвращает х
Если логическое выражение C
оценивает Правда
Отказ В противном случае, если выражение C
оценивает Ложь
Торговый оператор возвращает альтернативу y
Отказ
Тройное (от латыни Ternarius ) – это прилагательное значение «Состоит из трех предметов» Отказ ( Источник ) Итак, буквально, Темнарный оператор в Python состоит из трех операндов. Во многих кругах Python The Ternary оператор также называется «Условное выражение» Поскольку он выполняет данное выражение только в том случае, если условие выполняется.
Синтаксис : Три операнда написаны как х если с остальными y
который читает как «возвращение X
Если C
еще вернуть y
». Давайте написать это более интуитивно, как:
if else
Возврат экспрессии оператора в случае, если условие оценивается к истинному | |
Условие, которое определяет, нужно ли возвращать или ветку. | |
Возврат экспрессии оператора в случае, если условие оценивает ложь |
Давайте посмотрим на минимальный пример в нашем интерактивном коде Shell:
Упражнение : Запустите код и введите свой возраст. Какой вывод? Запустите код еще раз и попробуйте изменить выход!
Давайте погрузимся в разные варианты тройного оператора в Python!
Питон Торговые примеры
Давайте краткий обзор нескольких примеров на разных методах использовать тройной оператор:
age = 17 # Method 1: Basic Ternary print('wtf' if age<20 else 'What?') 'wtf' # Method 2: Ternary Tuple # (onFalse, onTrue) [condition] print(('wtf', 'What?')[age<20]) 'What?' # Method 3: Ternary Dictionary # Use Dictionary True/False values print({True: 'wtf', False: 'What?'}[age<20]) 'wtf' # Method 4: Ternary Lambda # Lambda function with 0 arguments # Execute only one branch expression --> more efficient print((lambda: 'wtf', lambda:'What?')[age<20]()) 'What?'
Некоторые из них довольно запутаны, верно? Оставайтесь со мной на мгновение, потому что вы узнаете о каждом из них следующие! 🙂.
Базовый тройник
Самый простой тройной оператор х если с остальными y
состоит из трех операндов х
, C
и y
Отказ Это выражение с возвращаемой стоимостью.
- Темнарный оператор возвращает
х
Если логическое выражениеC
оцениваетПравда
Отказ - В противном случае, если выражение
C
оцениваетЛожь
Торговый оператор возвращает альтернативуy
Отказ
Это позволяет назначать значения для переменной условной с помощью Ternary Operator. Вы также можете Печать Значения условно путем передачи базового тройного оператора в Печать ()
Функция:
age = 17 print('wtf' if age<20 else 'What?') 'wtf'
Состояние C = возраст <20
оценивает Правда
Отказ Таким образом, первая часть тройного оператора x = 'wtf'
возвращается и передается в Печать ()
утверждение. С другой стороны, люди старше 20 лет, как правило, спрашивают 'Какие?'
а не «WTF»
Так что это будет выпуск Темнарного оператора.
Питон Тернарный кортеж
Снарядная форма тройного оператора является следующим синтаксис кортежей Отказ
Синтаксис : Вы можете использовать синтаксис кортежа (X, Y) [C]
состоящий из кортежа (х, у)
и состояние C
заключенный в квадратный кронштейн. Вот более интуитивный способ представить этот синтаксис кортежа.
(, )[ ]
Возврат экспрессии оператора в случае, если условие оценивается к истинному | |
Условие, которое определяет, нужно ли возвращать или ветку. | |
Возврат экспрессии оператора в случае, если условие оценивает ложь |
На самом деле, порядок
и
Операнды просто перевернуты по сравнению с основным тройным оператором. Во-первых, у вас есть ветвь, которая возвращается, если состояние не удерживается. Во-вторых, вы запускаете ветку, которая возвращается, если удерживается состояние.
age = 17 print(('wtf', 'What?')[age<20]) 'What?'
Состояние Возраст <20
Держит, поэтому возвращаемое значение передается в Печать ()
Функция – это
филиал 'Какие?'
Отказ Не волнуйтесь, если это смущает тебя – ты не одинок. Давайте уточним, почему этот синтаксис кортежа работает так, как он делает!
Во-первых, вы создаете кортеж («WTF», «Что?»)
Отказ Для доступа к первому значению кортежа «WTF»
Вы бы использовали стандарт Индексирование синтаксис («WTF», «Что?»)
[0] Отказ Для доступа к второму значению кортежа 'Какие?'
Вы бы использовали стандартный индексирующий синтаксис («WTF», «Что?»)
[1] Отказ
Во-вторых, вы создаете состояние Возраст <20
Отказ Вы используете это состояние как значение индексации. Вы в конечном итоге с («WTF», «Что?»)
[Ложь] или («WTF», «Что?»)
[Правда] Отказ Как вы можете знать, Логины Ложь
и Правда
представлены через целые числа 0
и 1
в питоне. Таким образом, вы получаете («WTF», «Что?»)
[0] и («WTF», «Что?»)
[1] , соответственно.
Другими словами : Если ваше состояние оценивает Ложь
, вы получаете доступ к первому значению кортежа. Если ваше состояние оценивает Правда
, вы получаете доступ к второму значению кортежа.
Python Ternary Словарь
Проблема : Учитывая Словарь и ключ. Можете ли вы использовать Ternary Operator для возврата ключа из словаря, но только если он существует, чтобы избежать ошибки ключей? Если ключ не существует, должна быть выполнена функция «падение».
Пример : Скажем, вы хотите сделать что-то вроде следующего (псевдокод):
var = dict["key"] if dict.has_key("key") else "fallback"
Решение : Вы можете использовать The Terary Operator Dict [Key] Если ключ в Dict Else «Follack»
Для достижения этого:
d = {'Alice': 17, 'Bob': 22} key = 'Alice' # Has key: var = d[key] if key in d else -1 print(var) # 17 # Doesn't have key: key = 'Ann' var = d[key] if key in d else -1 print(var) # -1
Торговый оператор возвращает значение, связанное с данным ключом, но только если ключ существует. Если оно не существует, он возвращает значение по умолчанию -1.
Однако более Питон способ достичь то же самое в более читаемо и больше Кратко способ использовать Словарь. Получить (ключ, по умолчанию)
Функция:
d = {'Alice': 17, 'Bob': 22} key = 'Alice' # Has key: var = d.get(key, -1) print(var) # 17 # Doesn't have key: key = 'Ann' var = d.get(key, -1) print(var) # -1
Внешняя структура кода – это то же самое – но функция Get с значением по умолчанию -1 семантически заменяет более сложный тройной оператор.
Python Ternary лямбда
Вы также можете написать условные операторы в функции лямбда. Часто это приводит к более крашеному и читабельному способу достижения того же. Скажем, у вас есть следующий пример:
def f(x): if x > 100: x = 1.1*x else: x = 1.05*x return x print(f(100)) # 105.0
Функция f (x)
принимает один аргумент х
И увеличивает его на 10%, если аргумент больше 100. В противном случае он увеличивает его на 5%. Как получается, вы также можете эффективно использовать оператор Темнарного оператора:
f = lambda x: 1.1*x if x>100 else 1.05*x print(f(100)) # 105.0
Результат такой же. Промежуточный к продвинутому кодеру Python не будет проблем с пониманием кода, и это гораздо более лаконично. Вот почему я бы предпочел этот путь за первый.
Python Ternary несколько строк
Что если у вас есть тройной оператор, это очень долго?
var = 'I want to learn Python' if 42**2<166 else 'I want to learn Go programming' print(var) # I want to learn Go programming
Проблема : Как написать Terary Operator в нескольких строках?
Решение : Вы можете продлить любой Логическая линия в Python над несколькими физическими линиями Используя скобки.
var = 'I want to learn Python' if 42**2<166 else 'I want to learn Go programming' print(var) var = ('I want to learn Python' if 42**2<166 else 'I want to learn Go programming') print(var) # I want to learn Go programming
Это Pep8 Стандартный способ разрушения длинных строк – если вы не можете сделать это более естественным образом (например, избегая тройного оператора и используя заявление, если в этом примере).
Python Ternary Elif.
К настоящему времени вы узнали, как писать оператор If-else в одной строке кода с использованием Ternary Operator. Но вы можете сделать то же самое с оператором ELIF, если у вас есть несколько условий?
Конечно вы можете! (Если вы сомневаетесь в том, можете ли вы сделать XYZ в одной строке Python, просто предположим, что вы можете. Проверьте мою новую книгу «Python One-Liners» для освоить единую строку кода!)
Скажем, вы хотите написать следующее условие, если в одном случае код:
>>> x = 42 >>> if x > 42: >>> print("no") >>> elif x == 42: >>> print("yes") >>> else: >>> print("maybe") yes
Элиф Филиал выигрывает: Вы печатаете вывод «Да»
в оболочку. Но как сделать это в одной строке кода? Просто используйте Ternary Operator с оператором ELIF не будет работать (он бросит ошибку синтаксиса).
Ответ прост: гнездо двух тройных операторов, как так:
>>> print("no") if x > 42 else print("yes") if x == 42 else print("maybe") yes
Если значение x больше 42, мы печатаем «нет» в оболочку. В противном случае мы выполняем остаток кода (который является тройным оператором сама). Если значение x равно 42, мы печатаем «Да», иначе «возможно».
Поэтому, вложении нескольких тройных операторов, мы можем значительно увеличить наше Python One-Liner Power !
Попробуй сам:
Упражнение : Какой метод более лаконичен? Подсчитайте количество символов (или напишите небольшой сценарий, который делает это для вас;))!
Связанная статья : Python Ternary Elif.
Питон Терна вложено
В предыдущем примере вы видели, как семестный оператор Tемна семантически добавляет ветку ELIF. Теоретически, вы можете добавить произвольное количество ветвей ELIF, вложенные все больше и более тройных операторов:
# Method 1: If ... Elif ... Else x = 42 if x > 42: y = 1 elif x == 42: y = 2 elif x == 12: y = 3 else: y = 4 print(y) # 2 # Method 2: Nested Ternary Operator y = 1 if x > 42 else 2 if x == 42 else 3 if x == 12 else 4 print(y) # 2
Тем не менее, читабельность страдает плохо, и вы не должны ничего делать. Простой Mult-Line Если ... Элиф ... Элиф ... еще
Заявление лучше!
ПИтона Травочная оценка Оценка
Проблема : Учитывая тройной оператор Х если с остальными y
это возвращает выражение Х
Если условие C
. встречается и возвращает выражение Y
иначе. Что такое порядок оценки этих выражений? Будет выражение Х
Оценить, даже если условие C
. это Ложь
?
Решение : Согласно Официальная документация Python : «Выражение x, если c царствуйте y
сначала оценивают условие c, а не x. Если c rever true, x оценивается x, и его значение возвращается; в противном случае y оценивается, и его значение возвращается.
Таким образом, только соответствующее условие оценивается как можно увидеть в следующем примере кода:
print('X') if 5>3 else print('Y') # X
Вы запускаете выражение Печать ('x')
Если условие 5> 3
оценивает Правда
(который он делает). Интересное наблюдение состоит в том, что выражение Печать ('y')
не выполняется!
Python Ternary в понимании списка
Вы можете использовать оператор Ternary в качестве выражения части устройства понимания списка. Давайте быстро повторим список поставок:
Вместо использования унального выражения вы можете использовать тройное выражение:
print([x**2 if x%2 else x for x in range(5)]) # [0, 1, 2, 9, 4]
Вы используете тройную операцию x ** 2, если x% 2 else x
Чтобы вернуть квадратный номер только за нечетные значения. Даженности остаются без изменений.
Python Terary Pep8 Pyphone
Оператор Python Ternary хороший стиль или плохой?
Торговый оператор хороший и питонический стиль, который удовлетворяет Pep8 Standard Отказ Некоторые невысказанные правила:
- Если ветвь IF должна быть наиболее вероятной.
- Не используйте вложенные рабочие операторы (используйте простые многострочные
Если ... Элиф ... тогда ...
stepments вместо). - Не используйте длинные тройные операторы со сложными выражениями (снова используйте многострочные
если вместо этого
заявления).
Ternary Python не может назначить условное выражение
Если вы используете Ternary Operator в неправильном пути, он бросит синтаксисэррору:
Вы можете разрешить SyntaxError: не может назначить условное выражение, избегая использования оператора присвоения внутри вашего тройного оператора. Вместо этого назначите возвращаемое значение Ternary Operator для переменной, если вы должны:
a = 2 if 5>2 else 4 print(a) # 2
Теперь код не бросает еще одну ошибку.
Питон Тернар нет
Вы можете использовать любое возвращаемое значение в Ternary Operator – даже нет. Например, вы часто видите тройных операторов, которые на самом деле ничего не возвращают и просто выполняют определенную функцию без возвращаемого значения:
age = 20 # Ternary operator returns None print('hi') if age<20 else print('hello') # hello
Конечно, это не очень чистый и читаемый код Python – лучшая альтернатива будет использовать простое, если утверждение:
# Better alternative: if age<20: print('hi') else: print('hello')
Куда пойти отсюда?
Достаточно теории, давайте познакомимся!
Чтобы стать успешным в кодировке, вам нужно выйти туда и решать реальные проблемы для реальных людей. Вот как вы можете легко стать шестифункциональным тренером. И вот как вы польские навыки, которые вам действительно нужны на практике. В конце концов, что такое использование теории обучения, что никто никогда не нуждается?
Практические проекты – это то, как вы обостряете вашу пилу в кодировке!
Вы хотите стать мастером кода, сосредоточившись на практических кодовых проектах, которые фактически зарабатывают вам деньги и решают проблемы для людей?
Затем станьте питоном независимым разработчиком! Это лучший способ приближения к задаче улучшения ваших навыков Python – даже если вы являетесь полным новичком.
Присоединяйтесь к моему бесплатным вебинаре «Как создать свой навык высокого дохода Python» и посмотреть, как я вырос на моем кодированном бизнесе в Интернете и как вы можете, слишком от комфорта вашего собственного дома.
Присоединяйтесь к свободному вебинару сейчас!
Python One-Liners Книга
Python Programmemers улучшит свои навыки информатики с этими полезными одноклассниками.
Python One-listers научит вас читать и писать «одноклассники»: краткие заявления полезных функций, упакованных в одну строку кода. Вы узнаете, как систематически распаковать и понимать любую строку кода Python и писать красноречие, мощно сжатый Python, как эксперт.
Пять главных глав на пять глав обложки советы и трюки, регулярные выражения, машинное обучение, самые темы науки о данных и полезные алгоритмы. Подробные объяснения одноклассников вводят ключевые концепции компьютерных наук и повысить ваши кодировки и аналитические навыки. Вы узнаете о продвинутых функциях Python, такие как понимание списка, нарезки, нарезки, функции лямбда, регулярные выражения, карта и уменьшения функций и нарезки нарезки. Вы также узнаете, как:
• Используйте структуры данных для решения реальных проблем, такие как использование булевой индексации для поиска городов с загрязнением выше среднего • Используйте Numpy Basics, такие как массив, форма, ось, тип, вещание, расширенная индексация, нарезка, сортировка, поиск, агрегация и статистика • Рассчитайте базовую статистику многомерных массивов данных и алгоритмы K-означает для безоговорочного обучения • Создайте более усовершенствованные регулярные выражения с помощью группировки и названных групп, отрицательные LookAeads, сбежавшие символы, пробелы, наборы символов (и наборы отрицательных символов) и жадные/негридические операторы • Понимать широкий ассортимент темы компьютерных наук, включая анаграммы, палиндромы, сверты, перестановки, факториалы, простые числа, цифры фибоначчи, обфускации, поиск и алгоритмическую сортировку
К концу книги вы узнаете, как писать Python в его самых утонченных, и создавать краткие, красивые куски «Python Art» в простой строке.
Получите свой Python One-Liners сейчас !!
Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.
Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python One-listers (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.
Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.