x печатается как список чисел 0–9, y — как множество этих чисел без гарантии порядка. z — объект генератора: print показывает его представление, а не сгенерированные числа.
Отображение в консоли различных типов коллекций Python
x печатается как список чисел 0–9, y — как множество этих чисел без гарантии порядка. z — объект генератора: print показывает его представление, а не сгенерированные числа.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Какой вывод появится после выполнения следующего кода?
x = [i for i in range(10)]
y = {i for i in range(10)}
z = (i for i in range(10))
print(x)
print(y)
print(z)
Ответ
x печатается как список чисел 0–9, y — как множество этих чисел без гарантии порядка. z — объект генератора: print показывает его представление, а не сгенерированные числа.
Первый вывод точен:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Множество содержит те же десять значений; видимый порядок нельзя использовать как гарантию, даже если он выглядит возрастающим. Для z вывод похож на <generator object at 0x...>, причём адрес меняется между запусками.
Чтобы получить значения генератора, выполните list(z) или переберите его циклом. Генератор вычисляет элементы по запросу и после полного обхода исчерпывается.