Что значит set python

Множества (set)

На этом занятии поговорим о новом типе данных в Python – множестве (set). По определению:

Множество (set) – это неупорядоченная коллекция уникальных элементов.

То есть коллекция, в которой отсутствуют дублирующие значения. Для создания множества используется следующий синтаксис:

Выведем в консоль эту коллекцию и ее тип:

Это объявление очень похоже на словарь. Только в словаре мы помимо значений еще указывали ключи. Здесь же ключей нет – только значения. Причем, если мы попробуем добавить туда вот такие повторяющиеся значения:

то они будут проигнорированы:

И это ключевая особенность работы этой коллекции: она автоматически отбрасывает все дубли.

В качестве значений множества можно использовать любой неизменяемый тип: числа, строки, кортежи. Например:

Также множества можно создавать с помощью специальной функции set:

или, указать в качестве аргумента любой итерируемый объект:

или даже функцию range:

Обратите внимание, если попытаться создать пустое множество вот так:

то получим не пустое множество, а пустой словарь! Пустое множество создается именно с помощью функции set:

Как можно использовать множества в программах? Например, если нам нужно из списка удалить все дубли:

мы можем его сначала превратить в множество из уникальных значений:

а, затем, обратно в список, используя функцию list:

Видите, как эту операцию можно просто реализовать на Python. Причем, две последние операции можно объединить в одну вот так:

Элементы множества можно обходить с помощью оператора цикла for:

В результате, все значения множества будут выведены в консоль. Причем, мы можем перебирать именно значения множеств, индексов у этих элементов нет, т.к. множество – это неупорядоченная коллекция. И вот такая операция

приведет к ошибке.

Методы добавления/удаления элементов в множестве

Для добавления элемента в множество используется метод add:

И, так как множества – это изменяемый тип данных, то этот метод сразу добавит этот элемент, если такого еще нет. То есть, если мы попробуем добавить 7 еще раз:

то множество не изменится.

Если необходимо в множество добавить сразу несколько значений, то для этого можно воспользоваться методом update:

В качестве аргумента мы должны указать итерируемый объект, например, список, значения которого и будут добавлены в множество, разумеется, с проверкой их уникальности. Или, так:

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

Для удаления элемента по значению используется метод discard:

Если еще раз попытаться удалить двойку:

то ничего не произойдет и множество не изменится.

Другой метод для удаления элемента по значению – remove:

но при повторном таком вызове:

возникнет ошибка, т.к. значение 4 в множестве уже нет. То есть, данный метод возвращает ошибку при попытке удаления несуществующего значения. Это единственное отличие в работе этих двух методов.

Также удалять элементы можно и с помощью метода pop:

При этом он возвращает удаляемое значение, а сам удаляемый элемент оказывается, в общем-то, случайным, т.к. множество – это неупорядоченный список. Если вызвать этот метод для пустого множества, то возникнет ошибка:

Наконец, если нужно просто удалить все элементы из множества, то используется метод:

На следующем занятии мы продолжим рассматривать множества и поговорим об операциях над них, а также о возможности их сравнения.

Видео по теме

#1. Первое знакомство с Python Установка на компьютер

#2. Варианты исполнения команд. Переходим в PyCharm

#3. Переменные, оператор присваивания, функции type и id

#4. Числовые типы, арифметические операции

#5. Математические функции и работа с модулем math

#6. Функции print() и input(). Преобразование строк в числа int() и float()

#7. Логический тип bool. Операторы сравнения и операторы and, or, not

#8. Введение в строки. Базовые операции над строками

#9. Знакомство с индексами и срезами строк

#10. Основные методы строк

#11. Спецсимволы, экранирование символов, row-строки

#12. Форматирование строк: метод format и F-строки

#13. Списки — операторы и функции работы с ними

#14. Срезы списков и сравнение списков

#15. Основные методы списков

#16. Вложенные списки, многомерные списки

#17. Условный оператор if. Конструкция if-else

#18. Вложенные условия и множественный выбор. Конструкция if-elif-else

#19. Тернарный условный оператор. Вложенное тернарное условие

#20. Оператор цикла while

#21. Операторы циклов break, continue и else

#22. Оператор цикла for. Функция range()

#23. Примеры работы оператора цикла for. Функция enumerate()

#24. Итератор и итерируемые объекты. Функции iter() и next()

#25. Вложенные циклы. Примеры задач с вложенными циклами

#26. Треугольник Паскаля как пример работы вложенных циклов

#27. Генераторы списков (List comprehensions)

#28. Вложенные генераторы списков

#29. Введение в словари (dict). Базовые операции над словарями

#30. Методы словаря, перебор элементов словаря в цикле

#31. Кортежи (tuple) и их методы

#32. Множества (set) и их методы

#33. Операции над множествами, сравнение множеств

#34. Генераторы множеств и генераторы словарей

#35. Функции: первое знакомство, определение def и их вызов

#36. Оператор return в функциях. Функциональное программирование

#37. Алгоритм Евклида для нахождения НОД

#38. Именованные аргументы. Фактические и формальные параметры

#39. Функции с произвольным числом параметров *args и **kwargs

#40. Операторы * и ** для упаковки и распаковки коллекций

#41. Рекурсивные функции

#42. Анонимные (lambda) функции

#43. Области видимости переменных. Ключевые слова global и nonlocal

#44. Замыкания в Python

#45. Введение в декораторы функций

#46. Декораторы с параметрами. Сохранение свойств декорируемых функций

#47. Импорт стандартных модулей. Команды import и from

#48. Импорт собственных модулей

#49. Установка сторонних модулей (pip install). Пакетная установка

#50. Пакеты (package) в Python. Вложенные пакеты

#51. Функция open. Чтение данных из файла

#52. Исключение FileNotFoundError и менеджер контекста (with) для файлов

#53. Запись данных в файл в текстовом и бинарном режимах

#54. Выражения генераторы

#55. Функция-генератор. Оператор yield

#56. Функция map. Примеры ее использования

#57. Функция filter для отбора значений итерируемых объектов

#58. Функция zip. Примеры использования

#59. Сортировка с помощью метода sort и функции sorted

#60. Аргумент key для сортировки коллекций по ключу

#61. Функции isinstance и type для проверки типов данных

#62. Функции all и any. Примеры их использования

#63. Расширенное представление чисел. Системы счисления

#64. Битовые операции И, ИЛИ, НЕ, XOR. Сдвиговые операторы

#65. Модуль random стандартной библиотеки

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

Источник

Множества (set и frozenset)

Доброго времени суток! Сегодня я расскажу о работе с множествами в python, операциях над ними и покажу примеры их применения.

Что такое множество?

Множество в python — «контейнер», содержащий не повторяющиеся элементы в случайном порядке.

Как видно из примера, множества имеет тот же литерал, что и словарь, но пустое множество с помощью литерала создать нельзя.

Множества удобно использовать для удаления повторяющихся элементов:

С множествами можно выполнять множество операций: находить объединение, пересечение.

  • len(s) — число элементов в множестве (размер множества).
  • x in s — принадлежит ли x множеству s.
  • set.isdisjoint(other) — истина, если set и other не имеют общих элементов.
  • set == other — все элементы set принадлежат other, все элементы other принадлежат set.
  • set.issubset(other) или set = other — аналогично.
  • set.union(other, . ) или set | other | . — объединение нескольких множеств.
  • set.intersection(other, . ) или set & other & . — пересечение.
  • set.difference(other, . ) или set — other — . — множество из всех элементов set, не принадлежащие ни одному из other.
  • set.symmetric_difference(other); set ^ other — множество из элементов, встречающихся в одном множестве, но не встречающиеся в обоих.
  • set.copy() — копия множества.

И операции, непосредственно изменяющие множество:

  • set.update(other, . ); set |= other | . — объединение.
  • set.intersection_update(other, . ); set &= other & . — пересечение.
  • set.difference_update(other, . ); set -= other | . — вычитание.
  • set.symmetric_difference_update(other); set ^= other — множество из элементов, встречающихся в одном множестве, но не встречающиеся в обоих.
  • set.add(elem) — добавляет элемент в множество.
  • set.remove(elem) — удаляет элемент из множества. KeyError, если такого элемента не существует.
  • set.discard(elem) — удаляет элемент, если он находится в множестве.
  • set.pop() — удаляет первый элемент из множества. Так как множества не упорядочены, нельзя точно сказать, какой элемент будет первым.
  • set.clear() — очистка множества.

frozenset

Единственное отличие set от frozenset заключается в том, что set — изменяемый тип данных, а frozenset — нет. Примерно похожая ситуация с списками и кортежами.

Источник

Читайте также:  Что значит услуга недоступна для вашего региона
Оцените статью