len(), sum(), min(), max()insorted()Работа с множествами очень сильно напоминает работу со списками, поскольку и множества, и списки содержат отдельные элементы, хотя элементы множества уникальны, а списки могут содержать повторяющиеся элементы. Многое из того, что мы делали со списками, доступно и при работе со множествами.
Длиной множества называется количество его элементов. Чтобы посчитать длину множества, используют встроенную функцию len() (от слова length – длина).
Следующий программный код:
myset1 = {2, 2, 4, 6, 6}
myset2 = set([1, 2, 2, 3, 3, 4, 4, 5, 5])
myset3 = set('aaaaabbbbccccddd')
print(len(myset1))
print(len(myset2))
print(len(myset3))
выведет:
3
5
4
Оператор in позволяет проверить, содержит ли множество некоторый элемент.
Рассмотрим следующий код:
numbers = {2, 4, 6, 8, 10}
if 2 in numbers:
print('Множество numbers содержит число 2')
else:
print('Множество numbers не содержит число 2')
Такой код проверяет, содержит ли множество numbers число 2 и выводит соответствующий текст:
Множество numbers содержит число 2
Мы можем использовать оператор in вместе с логическим оператором not. Например
numbers = {2, 4, 6, 8, 10}
if 0 not in numbers:
print('Множество numbers не содержит нулей')
Оператор принадлежности in работает очень быстро на множествах – намного быстрее, чем на списках. Поэтому если требуется часто осуществлять поиск в коллекции уникальных данных, то множество – подходящий выбор.
Встроенная функция sum() принимает в качестве аргумента множество чисел и вычисляет сумму его элементов.
Следующий программный код:
numbers = {2, 2, 4, 6, 6}
print('Сумма всех элементов множества =', sum(numbers))
выводит:
Сумма всех элементов множества = 12
Встроенные функции min() и max() принимают в качестве аргумента множество и находят минимальный и максимальный элементы соответственно.
Следующий программный код:
numbers = {2, 2, 4, 6, 6}
print('Минимальный элемент =', min(numbers))
print('Максимальный элемент =', max(numbers))
выводит:
Минимальный элемент = 2
Максимальный элемент = 6
Примечание 1. Индексация и срезы недоступны для множеств.
Примечание 2. Операция конкатенации + и умножения на число * недоступны для множеств.
Перебор элементов множества осуществляется точно так же, как и перебор элементов списка, то есть с помощью цикла for.
Для вывода элементов множества каждого на отдельной строке можно использовать следующий код:
numbers = {0, 1, 1, 2, 3, 3, 3, 5, 6, 7, 7}
for num in numbers:
print(num)
Такой код выведет (порядок элементов может отличаться):
0
1
2
3
5
6
7
Мы также можем использовать операцию распаковки множества.
Приведенный ниже код:
numbers = {0, 1, 1, 2, 3, 3, 3, 5, 6, 7, 7}
print(*numbers, sep='\n')
выводит (порядок элементов может отличаться):
0
1
2
3
5
6
7
Не стоит забывать, что множества – неупорядоченные коллекции, поэтому полагаться на порядок вывода элементов не стоит. Если нужно гарантировать порядок вывода элементов (по возрастанию/убыванию), то необходимо воспользоваться встроенной функцией sorted().
Приведенный ниже код:
numbers = {0, 1, 1, 2, 3, 3, 3, 5, 6, 7, 7}
sorted_numbers = sorted(numbers)
print(*sorted_numbers, sep='\n')
будет гарантированно выводить элементы множества в порядке возрастания.
Обратите внимание на то, что функция sorted() возвращает отсортированный список, а не множество. Не путайте встроенную функцию sorted() и списочный метод sort(). Множества не содержат метода sort().
Множества можно сравнивать между собой. Равные множества имеют одинаковую длину и содержат равные элементы. Для сравнения множеств используются операторы == и !=.
Приведенный ниже код:
myset1 = {1, 2, 3, 3, 3, 3}
myset2 = {2, 1, 3}
myset3 = {1, 2, 3, 4}
print(myset1 == myset2)
print(myset1 == myset3)
print(myset1 != myset3)
выводит:
True
False
True
Примечание 3. Встроенная функция sorted() имеет опциональный параметр reverse. Если установить этот параметр в значение True, произойдет сортировка по убыванию.
Приведенный ниже код:
numbers = {0, 1, 1, 2, 3, 3, 3, 5, 6, 7, 7}
sortnumbers = sorted(numbers, reverse=True)
print(*sortnumbers, sep='\n')
гарантированно выводит:
7
6
5
3
2
1
0
Примечание 4. Код для работы с множествами нужно писать так, чтобы результат его выполнения не зависел от расположения элементов и был одинаковым при любом порядке обхода, последовательного обращения ко всем элементам.