✅ Решения

⚡ Кратко

Сначала сравните своё решение с идеей, а не с каждой строкой.

Если код отличается, проверьте поведение на тех же входных данных.

Решение считается хорошим, если оно понятно, проходит пример и не зависит от случайного порядка вывода.

Топ-3 ошибки: путать ссылку и копию; ожидать порядок там, где его нет; усложнять выражение, когда обычный цикл читается лучше.

Решение 1. Нехешируемый список

my_list = [1, 2, 3]

try:
    my_set = {my_list}
except TypeError as error:
    print(type(error).__name__, error)

Список можно менять, поэтому его нельзя использовать как элемент set.

Решение 2. Уникальные символы

text = "hello world"
unique_chars = set(text)
unique_chars.discard(" ")
result = sorted(unique_chars)
print("Уникальные символы:", result)

sorted() добавлен для стабильного вывода.

Решение 3. Одинаковые элементы

list1 = [1, 2, 3, 4, 5]
list2 = [3, 4, 5, 6, 7]
intersection = sorted(set(list1) & set(list2))
print("Элементы в обоих списках:", intersection)

Пересечение множеств оставляет только общие уникальные элементы.

Решение 4. Проверка на подмножество несколькими способами

set1 = {1, 2, 3, 4}
set2 = {2, 3}

print(set2 <= set1)
print(set2.issubset(set1))

manual_result = True
for value in set2:
    if value not in set1:
        manual_result = False
        break
print(manual_result)

Третий способ не использует операции множеств, только цикл и in.