Python Множества - неупорядоченная коллекция объектов.
Python Множества — это эдакая неупорядоченная куча различных элементов, которая фиксирует факт принадлежности этих элементов некой структуре.
Зачем нужны Python Множества?
Множество в языке Питон — это структура данных, эквивалентная множествам в математике. Множество может состоять из различных элементов, порядок элементов в множестве неопределен.
В множество можно добавлять и удалять элементы, можно перебирать элементы множества, можно выполнять операции над множествами (объединение, пересечение, разность). Можно проверять принадлежность элементу множества.
В отличии от массивов, где элементы хранятся в виде последовательного списка, в множествах порядок хранения элементов не определен (более того, элементы множества хранятся не подряд, как в списке, а при помощи хитрых алгоритмов).
Это позволяет выполнять операции типа “проверить принадлежность элемента множеству” быстрее, чем просто перебирая все элементы множества.
Элементами множества может быть любой неизменяемый тип данных: числа, строки, кортежи.
Изменяемые типы данных не могут быть элементами множества, в частности, нельзя сделать элементом множества список (но можно сделать кортеж) или другое множество.
Требование неизменяемости элементов множества накладывается особенностями представления множества в памяти компьютера.
Вот дополнительная информация о Множествах:
Множества
Множества используются для хранения неупорядоченных коллекций объектов. Создаются множества с помощью функции set(), которой передаются последовательности элементов, как показано ниже:
s = set([3,5,9,10]) # Создаст множество чисел
t = set(“Hello”) # Создаст множество уникальных символовВ отличие от кортежей, множества являются неупорядоченными коллекциями и не предусматривают возможность доступа к элементам по числовому индексу.
Более того, элементы множества никогда не повторяются. Например, если поближе рассмотреть значения, полученные в предыдущем примере, можно заметить следующее:
>>> t
set([‘H’, ‘e’, ‘l’, ‘o’])Обратите внимание, что в множестве присутствует только один символ ‘l’.
Множества поддерживают стандартные операции над коллекциями, включая объединение, пересечение, разность и симметричную разность. Например:
a = t | s # Объединение t и s
b = t & s # Пересечение t и s
c = t – s # Разность (элементы, присутствующие в t, но
# отсутствующие в s)d = t ^ s # Симметричная разность (элементы,
# присутствующие в t или в s,
# но не в двух множествах сразу)С помощью методов add() и update() можно добавлять новые элементы в множество:
t.add(‘x’) # Добавит единственный элементs.update([10,37,42]) # Добавит несколько элементов в
# множество sУдалить элемент множества можно с помощью метода remove():
t.remove(‘H’)
Считаю, что значительно интереснее такой пример:
>>> t = set(«Hello, World sky winner»)
>>> t
{‘ ‘, ‘e’, ‘y’, ‘d’, ‘i’, ‘k’, ‘w’, ‘r’, ‘l’, ‘n’, ‘s’, ‘,’, ‘H’, ‘W’, ‘o’}
, ибо в него вошли и пробел, и запятая, и w, и W.
>>> s = set([3,5,9,10,5,9,10])
>>> s
{9, 10, 3, 5}
Обратите внимание, что любое множество выдаётся на печать заключённым в фигурные скобки, а задаётся заключённым в квадратные скобки.
А вот пример неизменяемого множества:
>>> s = frozenset([3,5,9,10,5,9,10])
>>> s
frozenset({9, 10, 3, 5})
Обратите внимание, что неизменяемое множество выдаётся на печать заключённым в фигурные и круглые скобки, а перед круглыми скобками записывается название frozenset.
Полезно использовать функцию dir():
Функция dir() выводит список всех методов объекта и является удобным инструментом для проведения экспериментов в интерактивной оболочке.
Для исследования множества используем команду dir(set):
>>> dir(set)
['__and__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__iand__', '__init__', '__init_subclass__', '__ior__', '__isub__', '__iter__', '__ixor__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__or__', '__rand__', '__reduce__', '__reduce_ex__', '__repr__', '__ror__', '__rsub__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__xor__', 'add', 'clear', 'copy', 'difference', 'difference_update', 'discard', 'intersection', 'intersection_update', 'isdisjoint', 'issubset', 'issuperset', 'pop', 'remove', 'symmetric_difference', 'symmetric_difference_update', 'union', 'update']
Для исследования неизменяемого множества используем команду dir(frozenset):
>>> dir(frozenset)
['__and__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__or__', '__rand__', '__reduce__', '__reduce_ex__', '__repr__', '__ror__', '__rsub__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__xor__', 'copy', 'difference', 'intersection', 'isdisjoint', 'issubset', 'issuperset', 'symmetric_difference', 'union']
Легко заметить, что frozenset имеет значительно меньше применимых методов.
!…
Приглашаю всех высказываться в Комментариях. Критику и обмен опытом одобряю и приветствую. В хороших комментариях сохраняю ссылку на сайт автора!
И не забывайте, пожалуйста, нажимать на кнопки социальных сетей, которые расположены под текстом каждой страницы сайта.
Продолжение тут…