Python Множества

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 имеет значительно меньше применимых методов.

!…

Приглашаю всех высказываться в Комментариях. Критику и обмен опытом одобряю и приветствую. В хороших комментариях сохраняю ссылку на сайт автора!

И не забывайте, пожалуйста, нажимать на кнопки социальных сетей, которые расположены под текстом каждой страницы сайта.
Python МножестваПродолжение тут…

Deviz_17

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Проверка комментариев включена. Прежде чем Ваши комментарии будут опубликованы пройдет какое-то время.