Рубрики
Без рубрики

Python One Line Terrary

Наиболее базовый тройной оператор X, если C осталять Y состоит из трех операндов X, C и Y. Это выражение с возвращаемой стоимостью. Темнарный оператор возвращает X, если булевое выражение C оценивает true. В противном случае, если выражение C оценивает false, тройник оператор возвращает альтернативу y. https://youtu.be/9xxcuhxrqz4 … Python One Terrary Terriare Подробнее »

Автор оригинала: Chris.

Самый простой тройной оператор х если с остальными 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 и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.