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

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

Відкрита

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 дозволяє гарантувати, що дані не будуть випадково змінені у процесі виконання програми.

2
Задача
Модуль 1: Python Core,  7 рівень,  7 лекція
Недоступна
Замороження
Замороження
2
Задача
Модуль 1: Python Core,  7 рівень,  7 лекція
Недоступна
Холодні ключі
Холодні ключі
Коментарі (3)
  • популярні
  • нові
  • старі
Щоб залишити коментар, потрібно ввійти в систему
negoda @poviranacze - Telegram в Python Intern (Train
19 липня 2025, 15:20
Для красивого вида словаря во втором задании делаем распаковку ключей, код :
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, 19:49
Я читаю цю лекцію про frozenset в "Рівень 10, Лекція 6" Рівень 10 - це рядки, а множини - це рівень 9
yuraku
Рівень 28
Expert
15 травня 2025, 22:24
а урла взагалі ua.javarush.python.core.lecture.level07.lecture07