len()
, sum()
, min()
, max()
in
sorted()
Работа с множествами очень сильно напоминает работу со списками, поскольку и множества, и списки содержат отдельные элементы, хотя элементы множества уникальны, а списки могут содержать повторяющиеся элементы. Многое из того, что мы делали со списками, доступно и при работе со множествами.
Длиной множества называется количество его элементов. Чтобы посчитать длину множества, используют встроенную функцию 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. Код для работы с множествами нужно писать так, чтобы результат его выполнения не зависел от расположения элементов и был одинаковым при любом порядке обхода, последовательного обращения ко всем элементам.