• burger-icon

    Шаг 4. Множества

    Баллов за прохождение: 1

    Множество

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

    Для того, чтобы создать множество можно воспользоваться функцией set

    empty_set = set()  # Создание пустого множества

    Нельзя написать просто {} потому что это создаст пустой словарь. Однако можно создать с 1 элементом:

    set_with_one_element = {1}  # Множество с одним элементом 1

    Основная задача множеств хранить в себе только уникальные элементы:

    my_set = {1, 2, 2, 3, 4, 5} # Дубликат 2 будет удален
    print(my_set) # Вывод: {1, 2, 3, 4, 5}

    Методы

    Множества имеют множество методов, мы рассмотрим самые нужные из них:

    1. add(): Добавляет элемент в множество.
    my_set = {1, 2, 3}
    my_set.add(4)
    print(my_set)  # Вывод: {1, 2, 3, 4}
    
    1. remove(): Удаляет элемент из множества. Если элемент не найден, возникает ошибка.
    my_set = {1, 2, 3}
    my_set.remove(2)
    print(my_set)  # Вывод: {1, 3}
    
    1. discard(): Удаляет элемент из множества, если он там присутствует. Если элемент не найден, ничего не происходит.
    my_set = {1, 2, 3}
    my_set.discard(2)
    print(my_set)  # Вывод: {1, 3}
    
    1. clear(): Удаляет все элементы из множества.
    my_set = {1, 2, 3}
    my_set.clear()
    print(my_set)  # Вывод: set()
    
    1. union(): Возвращает объединение двух множеств.
    set1 = {1, 2, 3}
    set2 = {3, 4, 5}
    union_set = set1.union(set2)
    print(union_set)  # Вывод: {1, 2, 3, 4, 5}
    
    1. intersection(): Возвращает пересечение двух множеств.
    set1 = {1, 2, 3}
    set2 = {3, 4, 5}
    intersection_set = set1.intersection(set2)
    print(intersection_set)  # Вывод: {3}
    
    1. difference(): Возвращает разность двух множеств (элементы, присутствующие в одном множестве, но отсутствующие в другом).
    set1 = {1, 2, 3}
    set2 = {3, 4, 5}
    difference_set = set1.difference(set2)
    print(difference_set)  # Вывод: {1, 2}
    
    1. symmetric_difference(): Возвращает симметрическую разность двух множеств (элементы, присутствующие только в одном из множеств).
    set1 = {1, 2, 3}
    set2 = {3, 4, 5}
    symmetric_difference_set = set1.symmetric_difference(set2)
    print(symmetric_difference_set)  # Вывод: {1, 2, 4, 5}
    

    frozenset

    Это кортеж в мире множеств, так как frozenset - это тип данных, который представляет собой неизменяемое множество. 

    my_frozenset = frozenset([1, 2, 3, 4])
    print(my_frozenset)  # Вывод: frozenset({1, 2, 3, 4})
    

    Так как он является неизменяемым, его можно использовать в качестве ключа словаря:

    frozen_set1 = frozenset([1, 2, 3])
    frozen_set2 = frozenset([4, 5, 6])
    
    my_dict = {frozen_set1: "Value 1", frozen_set2: "Value 2"}
    
    print(my_dict[frozen_set1])  # Вывод: Value 1
    

    Преимущества использования frozenset включают гарантию, что набор данных останется неизменным после его создания, и возможность использования в качестве ключа в словарях. Однако frozenset не поддерживает методы, изменяющие его содержимое, такие как add(), remove(), clear() и другие, доступные для обычных множеств.

    Индексация

    Множества (set) и неизменяемые множества (frozenset) в Python не поддерживают индексацию элементов, в отличие от списков (list) и кортежей (tuple). Это означает, что вы не можете получить доступ к элементам множества или frozenset по индексу, как вы это делаете с элементами списка или кортежа.

    my_set = {1, 2, 3}
    print(my_set[0])  # Вызовет ошибку TypeError: 'set' object is not subscriptable
    
    my_frozenset = frozenset([1, 2, 3])
    print(my_frozenset[0])  # Вызовет ошибку TypeError: 'frozenset' object is not subscriptable
    

    Поэтому если нам нужно найти какой-либо элемент или проверить его наличие, нужно воспользоваться следующим методом:

    my_set = {1, 2, 3}
    print(1 in my_set)  # Вывод: True
    
    my_frozenset = frozenset([1, 2, 3])
    print(1 in my_frozenset)  # Вывод: True
    

    Для решения задачи, Зарегистрируйтесь или Войдите на сайт.