Теория урока

31. Множества в Python

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

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

Предположим, у вас есть длинный список продуктов для покупки. Он настолько длинный, что некоторые продукты были написаны несколько раз. Чтобы оставить в нем только уникальные наименования, достаточно этот список преобразовать во множество. Далее пример:

Пример
numbers = {1, 3, 2, 5}           

Множества в исходном коде Python легко узнать: объекты отделены между собой запятой и помещены внутрь фигурных скобок. Словари тоже обрамлены фигурными скобками, но объекты в них делятся на ключи и значения, между которым ставится знак двоеточие (:).

Помните, как мы искали гласные буквы, которые попадаются в тексте в уроке про списки? Вот он:

Пример
letters = ["а", "е", "и", "о", "у", "э", "ю", "я"]
word = "список – это массив"
found = []

for item in word:
if item in letters:
if item not in found:
found.append(item)

for item in found:
print(item)

Уже скоро мы его упростим. А пока будем плавно подходить к этому. Создадим простое множество из букв и выведем его:

Пример
letters = {"а", "а", "о", "е", "е", "е"}
print(letters)

В результате вы увидите только три уникальные буквы. Аналогично, множество можно создать следующим образом:

Пример
letters = set("ааоеее")
print(letters)

Итак, буквы во множество добавили. Теперь необходимо выяснить, есть ли в словах буквы из нашего множества. Казалось бы логично использовать цикл for и оператор in, но лучше раскроем для себя новые полезные методы, присущие множествам: объединение, разность и пересечение. Давайте объединим множество наших трех букв и какого-нибудь слова:

Пример
letters = set("ааоеее")
word = "Привет"
result = letters.union(set(word))

Обратите внимание, что перед объединением, слово в переменной word было преобразовано во множество.

Теперь найдем отличие одного множества от другого. Для этого существует метод difference:

Пример
letters = set("ааоеее")
word = "Привет"
result = letters.difference(set(word)) # => {'а', 'о'}

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

И наконец, найдем пересечение или, другими словами, общие объекты. Именно этот метод поможет решить задачу с поиском букв из множества в заданном слове.

Пример
letters = set("ааоеее")
word = "Привет"
result = letters.intersection(set(word)) # => {'е'}

Теперь вы легко сможете решить ранее рассмотренную задачу буквально в две строки.

Подведем итог. Множества позволяют существенно упростить некоторые классы задач. Несмотря на это, не стоит сбрасывать со счетов другие структуры – у каждой свои плюсы. В этом уроке мы также рассмотрели методы присущие множествам: объединение, разность и пересечение.

Да, кстати, в этом уроке мы поверхностно посмотрели на методы множеств. В уроке 8.2. более подробно разберем методы для работы с множествами, а в уроке 8.3. изучим отношения между множествами и операции над ними.

ПРОЧИТАНО
Следующий урок

Похожие уроки и записи блога

Первое знакомство с PythonЗнакомство с Python
Списки в PythonЗнакомство с Python
Типы данных в PythonЗнакомство с Python
Методы и особенности множеств в PythonЗнакомство с Python
Структуры данных в PythonЗнакомство с Python
Модули в PythonЗнакомство с Python
Написание модулей в PythonЗнакомство с Python
Функциональное программирование: map, filter и reduceЗнакомство с Python
Погружение в PythonЗнакомство с Python
<
×
>
Впервые на сайте Codebra?

Извините за это всплывающее окно, меня они тоже раздражают.

Образовательный ресурс codebra.ru полностью посвящен программированию. Все курсы и уроки находятся на главной странице. Ради интереса можете посмотреть на содержимое курсов по Python, HTML и CSS, JavaScript, C++ и другие, размещенные на главной странице.

Если что-то не нашли, то воспользуйтесь поиском по сайту, который находится на главной странице в самом верху.

Удачи в обучении!

Закрыть окно