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

Простое введение в набор пониманий в Python

https://youtu.be/srqcg7l-sc.S. В этой статье я даю вам все, что вам нужно знать о наборе поставок, используя нотацию кронштейна {}. Что устанавливает понимание? Установленное понимание – это краткий способ создания наборов в Python, используя курсовые брекеты.

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

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

Что устанавливает понимание?

Установка понимания – это краткий способ создания наборов в Python с использованием курсовых скобок. Обозначение {выражение для элемент в контекст} Отказ Например, {x для х в Диапазон (10)} Создает набор {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} Отказ Вы можете добавить условие, чтобы ограничить контекст в {выражение для элемент в контекст Если Состояние} Отказ Например, {x для х в Диапазон (10) Если x> 5} Создает набор {6, 7, 8, 9} Отказ

Вам нужен переподготовка на наборах Python? Проверьте окончательное руководство по набору Python в этом блоге. Скажем, вы хотите отфильтровать всех клиентов из вашей базы данных, которые зарабатывают более 1 000 000 долларов. Это то, что новичок, не знающий набора, будет делать:

# (name, $-income)
customers = [("John", 240000),
            ("Alice", 120000),
            ("Ann", 1100000),
            ("Zach", 44000)]


# your high-value customers earning >$1M
whales = set()
for customer, income in customers:
   if income>1000000:
       whales.add(customer)


print(whales)
# {'Ann'}

Этот фрагмент нуждается в четырех строках, чтобы создать набор высококачественных клиентов (китов)!

Если вы это сделаете в вашей общедоступной основе Python Code, будьте готовы получить критику за «Не пишет код Pythonic» Отказ 😉.

Вместо этого гораздо лучший способ сделать то же самое, чтобы использовать Установить понимание :

whales = {x for x,y in customers if y>1000000}
print(whales)
# {'Ann'}

Красивая, не так ли?

Установленное понимание мертвое просто, если вы знаете формулу, я покажу вам в данный момент. Так почему же люди смущаются о том, как использовать установленное понимание? Поскольку они никогда не смотрели на самое важное утверждение по поводу понимания списка (что аналогично установлению понимания) в документации Python. Это это:

«Состояние списка состоит из скобок, содержащих выражение, сопровождаемое предложение, а затем нулю или более для или если положения. Результатом станет новым списком, полученным в результате выражения выражения в контексте и если положения, которые следует за ними. “

Вот формула для заданного понимания. Это то, что вы должны вернуть домой из этой статьи: Установленное понимание состоит из двух частей.

{ expression + context }

Первая часть – это выражение Отказ В приведенном выше примере это была переменная х Отказ Но вы также можете использовать более сложное выражение, такое как x.upper () Отказ Используйте любую переменную в своем выражении, которую вы определены в контексте в пределах петля утверждение.

Смотрите этот пример:

whales = {x.upper() for x,y in customers if y>1000000}
print(whales)
# {'ANN'}

Вторая часть – контекст Отказ Контекст состоит из произвольного количества для и Если пункты Одна цель контекста – определить (или ограничить) последовательность элементов, на которых мы хотим применить выражение. Вот почему вы иногда видите сложные ограничения, такие как это:

small_fishes = {x + str(y) for x,y in customers if y>1000000 if x!='John'}
# (John is not a small fish...)

print(small_fishes)
# {'Zach44000', 'Alice120000'}

Вот об этом!

Подводя итог, помните эту формулу из этой статьи: Установить понимание = {выражение + контекст} Отказ

Как работает вложенное набор понимания в Python?

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

Приходя с компьютерной науки, я предполагал, что «комплексное понимание» относится к созданию Набор наборов Отказ Но после немного исследований я узнал, что вы не можете построить набор наборов, потому что наборы не Hashable Отказ Конечно. Насколько глупый я был!

Вместо этого большинство кодеров означают что-то другое, когда спрашивают «Как работает вложенное набор?» Отказ Они хотят знать, как использовать вложено для петли Создать простой набор hashable элементов.

Быть Фрэнком, это супер-простые вещи. Вы помните формулу заданного понимания {Выражение + контекст} ?

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

Давайте посмотрим на пример.

Предположим, вы хотите использовать установленное понимание, чтобы сделать этот код более лаконичным, например, вы хотите найти все возможные пары пользователей в вашей социальной сети:

# BEFORE
users = ["John", "Alice", "Ann", "Zach"]
pairs = set()
for x in users:
   for y in users:
       if x != y:
           pairs.add((x,y))
print(pairs)
# {('Zach', 'Alice'), ('John', 'Ann'), ('Alice', 'Zach'), ('Ann', 'John'), ('Alice', 'Ann'), ('Alice', 'John'), ('Zach', 'John'), ('Zach', 'Ann'), ('John', 'Zach'), ('Ann', 'Zach'), ('John', 'Alice'), ('Ann', 'Alice')}

Теперь этот код – беспорядок! Как мы можем исправить это? Просто используйте вложенное заданное понимание!

# AFTER
pairs = {(x,y) for x in users for y in users if x!=y}
print(pairs)
# {('Ann', 'Zach'), ('Zach', 'John'), ('Alice', 'John'), ('Ann', 'Alice'), ('Ann', 'John'), ('Alice', 'Zach'), ('Alice', 'Ann'), ('John', 'Zach'), ('Zach', 'Ann'), ('John', 'Ann'), ('Zach', 'Alice'), ('John', 'Alice')}

Как видите, мы делаем точно так же, как и с непонятым набором. Единственное отличие – написать два для петли и Если Заявление в Одна линия в скобках {} Отказ

В чем разница между пониманием списка и установленным пониманием в Python?

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

  • Брекеты против кронштейнов: вы хотите создать набор? Используйте фигурные брекеты {} Отказ Вы хотите создать список? Используйте угловые кронштейны [] Отказ
  • Тип данных результата: Понимание списка генерирует список и Установить понимание генерирует набор.

Но синтаксически, список пониманий и заданное понимание идентичны.

Куда пойти отсюда?

Достаточно теории, давайте познакомимся!

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

Практические проекты – это то, как вы обостряете вашу пилу в кодировке!

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

Затем станьте питоном независимым разработчиком! Это лучший способ приближения к задаче улучшения ваших навыков Python – даже если вы являетесь полным новичком.

Присоединяйтесь к моему бесплатным вебинаре «Как создать свой навык высокого дохода Python» и посмотреть, как я вырос на моем кодированном бизнесе в Интернете и как вы можете, слишком от комфорта вашего собственного дома.

Присоединяйтесь к свободному вебинару сейчас!

Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.

Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python One-listers (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.

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