Определение итогового содержимого множества после условного добавления

Множество будет содержать только 1 и 2. Повторные add не добавляют дубликаты; порядок отображения элементов множества не является контрактом.

Короткий ответ

Что ответить на собеседовании

Множество будет содержать только 1 и 2. Повторные add не добавляют дубликаты; порядок отображения элементов множества не является контрактом.

Подробный разбор

Ответ с пояснениями

Условие

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

a = set()
for i in range(1000):
    a.add(1)
    if i % 2 == 0:
        a.add(2)

print(a)

Ответ

Множество будет содержать только 1 и 2. Повторные add не добавляют дубликаты; порядок отображения элементов множества не является контрактом.

Цикл выполняется для i от 0 до 999. На каждой итерации добавляется 1, а на чётных — ещё и 2. Уже на первой итерации, когда i=0, оба значения находятся в множестве.

assert a == {1, 2}

Обычно вывод выглядит как {1, 2}, но полагаться на порядок set нельзя. Для стабильного представления используйте sorted(a), который вернёт [1, 2]. В отличие от списка, множество хранит уникальные элементы; тысяча вызовов add(1) не увеличивает его размер до тысячи.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее