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