Множества в Python
Множество позволяет хранить в одной переменной сразу несколько элементов.
В Python есть четыре встроенных типа коллекций: список, кортеж, словарь и множество. Каждый из них ведёт себя по-своему и подходит для разных задач.
Особенным множество делает то, что оно неупорядоченное, неизменяемое* и неиндексируемое.
Примечание: «неизменяемость» относится к уже существующим элементам: вы по-прежнему можете добавлять новые и удалять старые.
Чтобы записать множество, поместите его элементы в фигурные скобки.
Пример
Создайте множество и выведите его:
Вывод: полная программа на Python
thisset = {"apple", "banana", "cherry"}
print(thisset)
Введение во множества
myset = {"apple", "banana", "cherry"}
Элементы множества
Элементы множества описывают три правила: у них нет порядка, их нельзя изменить, и ни одно значение не может встретиться дважды.
Неупорядоченность
Множество хранит свои элементы без определённой последовательности.
Поэтому при каждом использовании множества они могут идти в другом порядке, и вы не можете обратиться к элементу по индексу или ключу.
Неизменяемость
Когда множество уже существует, элементы внутри него остаются такими, какие есть: ни один из них изменить нельзя.
Однако само множество может расти или уменьшаться, поскольку добавлять и удалять элементы разрешено.
Дубликаты не допускаются
Каждое значение во множестве должно быть уникальным, поэтому два равных элемента никогда не могут находиться в нём рядом.
Примечание: для множества True и 1 считаются одним значением, поэтому второе отбрасывается как дубликат.
Примечание: то же самое относится к False и 0: множество тоже считает их одним значением.
Пример
Второй «apple» просто отбрасывается:
Вывод: полная программа на Python
thisset = {"apple", "banana", "cherry", "apple"}
print(thisset)
Пример
Здесь True и 1 сливаются в один элемент:
Вывод: полная программа на Python
thisset = {"apple", "banana", "cherry", True, 1, 2}
print(thisset)
Пример
Здесь False и 0 сливаются в один элемент:
Вывод: полная программа на Python
thisset = {"apple", "banana", "cherry", False, True, 0}
print(thisset)
Получение длины множества
Функция len() сообщает, сколько элементов во множестве.
Пример
Подсчитайте элементы множества:
Вывод: полная программа на Python
thisset = {"apple", "banana", "cherry"}
print(len(thisset))
Элементы множества — типы данных
Элементы множества не ограничены одним типом данных.
Вы можете даже сочетать несколько типов в одном множестве:
Пример
Одно множество строк, одно целых чисел и одно логических значений:
Вывод: полная программа на Python
set1 = {"apple", "banana", "cherry"}
set2 = {1, 5, 7, 9, 3}
set3 = {True, False, False}
Пример
Строки, целые числа и логические значения вместе в одном множестве:
Вывод: полная программа на Python
set1 = {"abc", 34, True, 40, "male"}
type()
Python считает каждое множество объектом, а его тип данных называется 'set':
Пример
Спросите у Python, какого типа множество:
Вывод: полная программа на Python
myset = {"apple", "banana", "cherry"}
print(type(myset))
Конструктор set()
Фигурные скобки — не единственный вариант: множество создаёт и конструктор set().
Пример
Создайте множество с помощью конструктора set():
Вывод: полная программа на Python
thisset = set(("apple", "banana", "cherry")) # обратите внимание на двойные круглые скобки
print(thisset)
Коллекции Python (массивы)
Язык Python предлагает вам четыре типа данных-коллекций:
- Список сохраняет порядок и может изменяться. Повторяющиеся элементы допускаются.
- Кортеж сохраняет порядок, но не может изменяться. Повторяющиеся элементы допускаются.
- Множество не имеет порядка и индексов, а его элементы неизменяемы*. Каждый элемент уникален.
- Словарь сохраняет порядок** и может изменяться. Каждый элемент уникален.
*Нельзя изменять существующие элементы множества, хотя добавлять и удалять их разрешено.
**Словари стали упорядоченными в Python версии 3.7; вплоть до Python 3.6 включительно они были неупорядоченными.
Если вы знаете, что может и чего не может каждый тип, вам легче сделать хороший выбор. Подходящий для ваших данных тип может сохранить их смысл и сделать программу эффективнее или безопаснее.