JavaRush /Курси /Модуль 1: Python Core /Незмінювана множина — frozenset

Незмінювана множина — frozenset

Модуль 1: Python Core
Рівень 7 , Лекція 7
Відкрита

8.1 set-кортеж

Колекція frozenset — це незмінюваний аналог set. Вона надає всі можливості множини, але не дозволяє змінювати її елементи після створення. frozenset корисний у ситуаціях, коли потрібно зберігати унікальні елементи і гарантувати, що множина не буде змінена.

Створення frozenset

Для створення frozenset можна використовувати функцію frozenset(), передавши їй ітеруємий об'єкт (список, кортеж, рядок і т.д.).

Приклади:

Створення frozenset з списку


# Створення frozenset з списку
fset1 = frozenset([1, 2, 3, 4])
print(fset1)  # Вивід: frozenset({1, 2, 3, 4})

Створення frozenset з рядка


# Створення frozenset з рядка
fset2 = frozenset("hello")
print(fset2)  # Вивід: frozenset({'h', 'e', 'l', 'o'})

Створення пустого frozenset


# Створення пустого frozenset
fset3 = frozenset()
print(fset3)  # Вивід: frozenset()
        

8.2 Основні методи frozenset

frozenset підтримує більшість методів, доступних для змінюваних множин (set), але оскільки він незмінюваний, методи, що змінюють множину, недоступні.

Приклади:

Об'єднання множин (union)


fset1 = frozenset([1, 2, 3, 4])
fset2 = frozenset([3, 4, 5, 6])
            
# Об'єднання множин (union)
print(fset1 | fset2)  # Вивід: frozenset({1, 2, 3, 4, 5, 6})
print(fset1.union(fset2))  # Вивід: frozenset({1, 2, 3, 4, 5, 6})
        

Перетинання множин (intersection)


fset1 = frozenset([1, 2, 3, 4])
fset2 = frozenset([3, 4, 5, 6])
            
# Перетинання множин (intersection)
print(fset1 & fset2)  # Вивід: frozenset({3, 4})
print(fset1.intersection(fset2))  # Вивід: frozenset({3, 4})
        

Різниця множин (difference)


fset1 = frozenset([1, 2, 3, 4])
fset2 = frozenset([3, 4, 5, 6])
            
# Різниця множин (difference) 
print(fset1 - fset2)  # Вивід: frozenset({1, 2})
print(fset1.difference(fset2))  # Вивід: frozenset({1, 2})
        

Симетрична різниця (symmetric difference)


fset1 = frozenset([1, 2, 3, 4])
fset2 = frozenset([3, 4, 5, 6])
            
# Симетрична різниця (symmetric difference)
print(fset1 ^ fset2)  # Вивід: frozenset({1, 2, 5, 6})
print(fset1.symmetric_difference(fset2))  # Вивід: frozenset({1, 2, 5, 6})
        

8.3 Застосування frozenset

frozenset корисний у таких ситуаціях:

Використання як ключ у словниках:

Оскільки frozenset незмінюваний, його можна використовувати як ключ у словниках.


fset1 = frozenset([1, 2, 3])
fset2 = frozenset([3, 4, 5])
        
d = {fset1: "first", fset2: "second"}
print(d)  # Вивід: {frozenset({1, 2, 3}): 'first', frozenset({3, 4, 5}): 'second'}
    

Зберігання незмінюваних множин:

Якщо потрібно створити множину унікальних елементів, яка не буде змінена надалі, frozenset — чудовий вибір.

Безпека даних:

Використання frozenset дозволяє гарантувати, що дані не будуть випадково змінені у процесі виконання програми.

1
Опитування
Словники в Python, рівень 7, лекція 7
Недоступний
Словники в Python
Словники в Python
Коментарі (3)
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ
negoda Рівень 31
19 липня 2025
Для красивого вида словаря во втором задании делаем распаковку ключей, код :

list1 = ['Game']
list2 = ['Year']

fSet1 = frozenset(list1)
fSet2 = frozenset(list2)

fDict = {fSet1:'Grand Theft Auto', fSet2:'2013'}

for key, value in fDict.items(): #Распаковываем ключи циклом
    for item in key:
        print(f"{item}: {value}")
Andriy Trubchanin Рівень 23
8 лютого 2025
Я читаю цю лекцію про frozenset в "Рівень 10, Лекція 6" Рівень 10 - це рядки, а множини - це рівень 9
yuraku Рівень 28 Expert
15 травня 2025
а урла взагалі ua.javarush.python.core.lecture.level07.lecture07