Найти в Дзене
Каморка Программиста

Множества в Python, что это такое и как с эти жить дальше

Народ, всем привет. Сегодня мы поговорим про множества (set) в Python, встроенный тип данных, предназначенный для хранения уникальных элементов без определённого порядка. Они часто используются там, где важна проверка принадлежности, удаление дубликатов и выполнение математических операций над наборами данных. Несмотря на простоту, множества являются мощным и эффективным инструментом, который стоит хорошо понимать. Но для новичков они не всегда понятны, поэтому сегодня и погорим про них. Множество может хранить только уникальные и хешируемые объекты. Это означает, что в set нельзя поместить изменяемые типы данных, такие как списки или другие множества, но можно хранить: my_set = {1, 2, 3, "python", (10, 20)} Если попытаться добавить список, возникнет ошибка: my_set = {1, 2, [3, 4]} # TypeError Есть несколько способов создать множество. Например, через фигурные скобки или через функцию set(): numbers = {1, 2, 3, 4} numbers = set([1, 2, 3, 4]) Важно помнить, что пустое множество нельзя с
Оглавление

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

Что хранится в set

Множество может хранить только уникальные и хешируемые объекты. Это означает, что в set нельзя поместить изменяемые типы данных, такие как списки или другие множества, но можно хранить:

  • числа (int, float)
  • строки (str)
  • кортежи (tuple), если они состоят из неизменяемых элементов
  • frozenset (о нем ниже)
my_set = {1, 2, 3, "python", (10, 20)}
-2

Если попытаться добавить список, возникнет ошибка:

my_set = {1, 2, [3, 4]} # TypeError

Создание множеств

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

numbers = {1, 2, 3, 4}
numbers = set([1, 2, 3, 4])

Важно помнить, что пустое множество нельзя создать с помощью {} — это будет пустой словарь:

empty_set = set()
empty_dict = {}
-3

Уникальность элементов

Главная особенность set это автоматическое удаление дубликатов:

data = {1, 2, 2, 3, 3, 3}
print(data) # {1, 2, 3}

Это свойство часто используют для очистки данных:

names = ["Alice", "Bob", "Alice", "Eve"]
unique_names = set(names)

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

Добавление одного элемента:

my_set.add(5)

Добавление нескольких элементов:

my_set.update([6, 7, 8])

Удаление элемента (вызывает ошибку, если элемента нет):

my_set.remove(3)

Безопасное удаление (ошибки не будет):

my_set.discard(3)

Удаление и возврат случайного элемента:

item = my_set.pop()

Очистка множества:

my_set.clear()

-4
Канал «Т.Е.Х.Н.О Windows & Linux» — экспертные статьи, реальные гайды, настройка ПК, приватность и оптимизация. Всё бесплатно и без платных подписок!
Т.Е.Х.Н.О Windows & Linux | Дзен

Присоединяйся, чтобы стать профи!

Проверка принадлежности

Проверка, есть ли элемент в множестве, выполняется очень быстро. По скорости эта операция значительно быстрее, чем поиск в списке, особенно при большом количестве элементов.

if 10 in my_set:
print("Элемент найден")

Еще множество можно перебирать в цикле for, но порядок элементов не гарантирован:

for item in my_set:
print(item)

Если нужен порядок, множество можно преобразовать в список и отсортировать:

for item in sorted(my_set):
print(item)
-5

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

Множества поддерживают классические математические операции, а также объединение (union)

a = {1, 2, 3}
b = {3, 4, 5}
result = a | b
# {1, 2, 3, 4, 5}

Пересечение (intersection)

result = a & b
# {3}

Разность (difference)

result = a - b
# {1, 2}

Элементы, которые есть только в одном из множеств:

result = a ^ b
# {1, 2, 4, 5}

Проверка, является ли одно множество подмножеством другого:

a = {1, 2}
b = {1, 2, 3}
print(a.issubset(b)) # True

Проверка надмножества:

print(b.issuperset(a)) # True

Проверка, не имеют ли множества общих элементов:

print(a.isdisjoint({4, 5})) # True
-6

Неизменяемые множества, frozenset

frozenset это неизменяемая версия множества. После создания его нельзя изменить. Он полезен, когда множество нужно использовать как ключ словаря или элемент другого множества:

data = {
frozenset([1, 2]): "A",
frozenset([3, 4]): "B"
}

Множества в Python это эффективный инструмент для работы с уникальными данными и логическими операциями над наборами элементов. Они обеспечивают высокую скорость проверки принадлежности, позволяют легко удалять дубликаты и выполнять операции объединения, пересечения и разности. Если в задаче важна уникальность значений или сравнение групп данных, использование set и frozenset будет не только удобным, но и наиболее правильным решением.

-7

Кстати, у нас есть и другой канал, FIT FOR FUN, про фитнес, бодибилдинг, правильное питание, похудение и ЗОЖ в целом. Кому интересно, ждем вас в гости!