Множество будет содержать только 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) не увеличивает его размер до тысячи.