Задача

3 /10


Работа с множествами. Методы - 2

Теория Нажмите, чтобы прочитать/скрыть


Работа с множествами


Многие операции, которые можно использовать для других составных типов (например, списки, кортежи), не имеют смысла для множества.
Например, обращение по индексу и срезы. Однако Python позволяет выполнять ряд операций с элементами множества, которые имитируют операции с математическими множествами.
Большинство из этих операций можно выполнять двумя способами: операцией или определенным методом.


Объединение множеств

x1 = {'foo', 'bar', 'baz'}
x2 = {'baz', 'qux', 'quux'}
print(x1 | x2)         # {'bar', 'baz', 'qux', 'quux', 'foo'}
print(x1.union(x2))    # {'bar', 'baz', 'qux', 'quux', 'foo'}

Операция объединения множеств (|) и аналогичный метод имеют тонкую разницу. Когда вы используете | оператор, оба операнда должны иметь тип set. Метод union() примет любой итерируемый объект в качестве аргумента, преобразует его во множество и затем выполнит объединение.
 
Примечание
Итерируемый объект (iterable) - это объект, который способен возвращать элементы по одному. 


Обратите внимание на разницу
x1 = {'foo', 'bar', 'baz'} 
print(x1.union(('baz', 'qux', 'quux')))    # {'baz', 'bar', 'quux', 'foo', 'qux'}
print(x1 | ('baz', 'qux', 'quux'))         # builtins.TypeError: 
                                           # unsupported operand type(s) for |: 'set' and 'tuple'



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

Ниже приведен список операций, доступных в Python. Некоторые выполняются оператором, некоторые - методом, а некоторые - обоими. Принцип, изложенный выше, обычно применяется: там, где ожидается множество, методы обычно принимают любой итерируемый элемент в качестве аргумента, но операторы требуют в качестве операндов объекты типа set.

Пояснение: записи в квадратных скобках указывают на то, что эта часть может быть опущена.
 
Название Метод Оператор Описание
объединение x1.union(x2[, x3, …]) x1 | x2 [| x3 …] возвращает множество всех элементов, которые присутствуют либо в x1 либо в x2 (либо других)
пересечение множеств x1.intersection(x2[, x3, …]) x1 & x2 [& x3 …] возвращает множество элементов, общих для x1 и x2 (и других)
разница между множествами x1.difference(x2) x1 - x2 [- x3 …] возвращает множество элементов, которые есть в x1, но нет в x2 (только -  поддерживает множественность)
симметричная разница между множествами x1.symmetric_difference(x2) x1 ^ x2 [^ x3] возвращает множество элементов, которые есть в x1 или x2, но не в обоих сразу
(оператор ^ поддерживает множественность)
общие элементы в наборах x1.isdisjoint(x2) нет возвращает True, если x1 и x2 не имеют общих элементов
x1 подмножество x2 x1.issubset(x2) x1 <= x2 True, если x1 подмножество x2, иначе - False
Правильное подмножество - x1 < x2 True, если x1 является правильным подмножеством x2
x1 надмножество x2 x1.issuperset(x2) x1 >= x2 True, если x1 содержит все элементы x2
правильное надмножество - x1 > x2 True, если x1 является правильным надмножеством x2
объединение множеств x1.update(x2[, x3 ...]) x1 |= x2 [| x3 ...] Добавляет к x1 элементы x2, которых нет в x1
пересечение множеств x1.intersection_update(x2[, x3 ...]) x1 &= x2 [& x3 ...] Обновляет x1, сохраняя элементы, которые есть в обоих множествах x1 и x2
разница множеств x1.difference_update(x2[, x3 ...]) x1 -= x2 [| x3 ...] Обновляет x1, удаляя элементы, найденные в x2
симметричная разность x1.symmetric_difference_update(x2) x1 ^= x2 Обновляет x1, сохраняя элементы, найденные в x1 ли x2, но не в обоих

Задача

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

Входные данные
Вводятся два списка чисел. Все числа каждого списка находятся на отдельной строке.

Выходные данные
Выведите ответ на задачу.

 
Примеры
Входные данные Выходные данные
1 1 3 2
5 1 2
2

time 1000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
Python1409
Комментарий учителя