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

Python одна строка, если не нет

Чтобы назначить результат функции get_value () для переменной x, если она отличается от NOT, используйте оператор WALRUS, если TMP (): в однострочном блоке. Оператор Walrus назначает возвращаемое значение функции переменной TMP и возвращает его одновременно, так что вы … Python One Line, если нет ничего читать »

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

Чтобы назначить результат функции get_value () Переменную х Если он отличается от Нет Используйте оператор Walrus Если TMP (): в пределах одной линии, если блок. Оператор Walrus назначает возвращаемое значение функции переменной TMP и возвращает его одновременно, чтобы вы могли проверить и назначить его переменным х впоследствии.

Проблема : Как назначить значение переменной, если оно не равно Нет -Угибая только одна строка кода Python?

Пример : Скажем, вы хотите назначить возвращаемое значение функции get_value (), но только если она не возвращает ничего. В противном случае вы хотите оставить ценность, как есть. Вот пример кода:

import random


def get_value():
    if random.random()>0.5:
        return None
    return 1

# Naive approach:
x = 42
tmp = get_value()
if tmp != None:
    x = tmp
print(tmp)

Пока это работает, вам нужно выполнить функцию get_value () дважды, что не является оптимальным. Альтернатива будет назначать результат get_value () Функция для временной переменной, чтобы избежать повторного выполнения функции:

x = 42
temp = get_value()
if temp != None:
    x = temp
print(x)

Однако это кажется неуклюжем и неэффективным. Есть ли способ лучше?

У даваем обзор одноклассников, которые условно назначают значение заданной переменной:

Упражнение : Запустите код. Это всегда генерирует тот же результат?

Метод 1: Темнарный оператор + точка запятой

Самый основной Тернарный оператор х если с остальными y состоит из трех операндов х , C и y Отказ Это выражение с возвращаемой стоимостью. Темнарный оператор возвращает х Если логическое выражение C оценивает Правда Отказ В противном случае, если выражение C оценивает Ложь Торговый оператор возвращает альтернативу y Отказ

Вы можете использовать Ternary Operator для решения этой проблемы в сочетании с Semicolon для записи нескольких строк кода в виде Python One-Liner.

# Method 1
tmp = get_value(); x = tmp if tmp else x

Вы не можете запустить get_value () Функция дважды – проверить, возвращает ли она Правда и назначить возвращаемое значение для переменной х Отказ Почему? Потому что это неразмерное и может вернуть разные значения для разных исполнений.

Следовательно, следующий код будет тупому ошибкой:

x = get_value() if get_value() else x

Переменная х Может все еще быть Нет -Вен после того, как действующий оператор, по-видимому, проверил состояние.

Статьи по Теме:

  • Python Ternary.
  • Python One-Line, если утверждение
  • Python Semicolon

Способ 2: Walrus + One-Line-если

Красивое расширение Python 3.8 это Оператор Walrus Отказ Оператор Walrus : = является оператором назначения с возвратным значением. Таким образом, это позволяет проверить условие и присвоение значения одновременно:

# Method 2
if tmp := get_value(): x = tmp

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

Связанная статья: Оператор Walrus в Python 3.8

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