Основные операции с множествами 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Основные операции с множествами



Тип set в Python поддерживает несколько основных операций над множествами.

>>> a_set = {2, 4, 5, 9, 12, 21, 30, 51, 76, 127, 195}
>>> 30 in a_set (1)
True
>>> 31 in a_set
False
>>> b_set = {1, 2, 3, 5, 6, 8, 9, 12, 15, 17, 18, 21}
>>> a_set.union(b_set) (2)
{1, 2, 195, 4, 5, 6, 8, 12, 76, 15, 17, 18, 3, 21, 30, 51, 9, 127}
>>> a_set.intersection(b_set) (3)
{9, 2, 12, 5, 21}
>>> a_set.difference(b_set) (4)
{195, 4, 76, 51, 30, 127}
>>> a_set.symmetric_difference(b_set) (5)
{1, 3, 4, 6, 8, 76, 15, 17, 18, 195, 127, 30, 51}

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

2. Метод union() (объединение) возвращает новое множество, содержащее все элементы каждого из множеств.

3. Метод intersection() (пересечение) возвращает новое множество, содержащее все элементы, которые есть и в первом множестве, и во втором.

4. Метод difference() (разность) возвращает новое множество, содержащее все элементы, которые есть в множестве a_set, но которых нет в множестве b_set.

5. Метод symmetric_difference() (симметрическая разность) возвращает новое множество, которое содержит только уникальные элементы обоих множеств.

Три из этих методов симметричны.

# продолжение предыдущего примера
>>> b_set.symmetric_difference(a_set) (1)
{3, 1, 195, 4, 6, 8, 76, 15, 17, 18, 51, 30, 127}
>>> b_set.symmetric_difference(a_set) == a_set.symmetric_difference(b_set) (2)
True
>>> b_set.union(a_set) == a_set.union(b_set) (3)
True
>>> b_set.intersection(a_set) == a_set.intersection(b_set) (4)
True
>>> b_set.difference(a_set) == a_set.difference(b_set) (5)
False

1. Симметрическая разность множеств a_set и b_set выглядит не так, как симметрическая разность множеств b_set и a_set, но вспомните, множества неупорядочены. Любые два множества, все (без исключения) значения которых одинаковы, считаются равными.

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

3. Объединение двух множеств также симметрично.

4. Пересечение двух множеств также симметрично.

5. Разность двух множеств несимметрична. По смыслу, данная операция аналогична вычитанию одного числа из другого. Порядок операндов имеет значение.

Наконец, есть ещё несколько вопросов по множествам, которые вы можете задать.

>>> a_set = {1, 2, 3}
>>> b_set = {1, 2, 3, 4}
>>> a_set.issubset(b_set) (1)
True
>>> b_set.issuperset(a_set) (2)
True
>>> a_set.add(5) (3)
>>> a_set.issubset(b_set)
False
>>> b_set.issuperset(a_set)
False

1. Множество a_set является подмножеством b_set — все элементы a_set также являются элементами b_set.

2. И наоборот, b_set является надмножеством a_set, потому что все элементы a_set также являются элементами b_set.

3. Поскольку вы добавили элемент в a_set, но не добавили в b_set, обе проверки вернут значение False.

МНОЖЕСТВА В ЛОГИЧЕСКОМ КОНТЕКСТЕ

Вы можете использовать множества в логическом контексте, например, в операторе if.

>>> def is_it_true(anything):
… if anything:
… print("да, это истина")
… else:
… print("нет, это ложь")

>>> is_it_true(set()) (1)
нет, это ложь
>>> is_it_true({'a'}) (2)
да, это истина
>>> is_it_true({False}) (3)
да, это истина

1. В логическом контексте пустое множество — ложь.

2. Любое множество, содержащее хотя бы один элемент — истина.

3. Любое множество, содержащее хотя бы один элемент — истина. Значения элементов не важны.

Множества

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

В отличии от массивов, где элементы хранятся в виде последовательного списка, в множествах порядок хранения элементов не определен (более того, элементы множества хранятся не подряд, как в списке, а при помощи хитрых алгоритмов). Это позволяет выполнять операции типа “проверить принадлежность элемента множеству” быстрее, чем просто перебирая все элементы множества.

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

ЗАДАНИЕ МНОЖЕСТВ

Множество задается перечислением всех его элементов в фигурных скобках. Например:

A = {1, 2, 3}

Исключением является пустое множество, которое можно создать при помощи функции set(). Если функции set передать в качестве параметра список, строку или кортеж, то она вернет множество, составленное из элементов списка, строки, кортежа. Например:

A = set('qwerty')

print(A)

выведет {’e’, ‘q’, ‘r’, ‘t’, ‘w’, ’y’}.

Каждый элемент может входить в множество только один раз, порядок задания элементов не важен. Например, программа:

A = {1, 2, 3}

B = {3, 2, 3, 1}

print(A == B)

выведет True, так как A и B — равные множества.

Каждый элемент может входить в множество только один раз. set(‘Hello’) вернет множество из четырех элементов: {’H’, ‘e’, ‘l’, ’o’}.



Поделиться:


Последнее изменение этой страницы: 2017-02-19; просмотров: 269; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.217.67.16 (0.005 с.)