numbers = [x ** 2 for x in range(10_000_000_000)]

List comprehension пытается заранее создать десять миллиардов квадратов, что требует огромной памяти. Для последовательной обработки замените список генераторным выражением, но учитывайте стоимость самого вывода.

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

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

List comprehension пытается заранее создать десять миллиардов квадратов, что требует огромной памяти. Для последовательной обработки замените список генераторным выражением, но учитывайте стоимость самого вывода.

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

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

Условие

numbers = [x ** 2 for x in range(10_000_000_000)]

for num in numbers: print(num)

Ответ

List comprehension пытается заранее создать десять миллиардов квадратов, что требует огромной памяти. Для последовательной обработки замените список генераторным выражением, но учитывайте стоимость самого вывода.

numbers = (x ** 2 for x in range(10_000_000_000))
for num in numbers:
    print(num)

Генератор вычисляет следующий квадрат по запросу и не хранит всю последовательность. Это устраняет накопление списка, но не делает десять миллиардов операций быстрыми: печать такого объёма всё равно непрактична. В реальной задаче ограничьте диапазон или обрабатывайте данные пакетами, не собирая их затем обратно через list(numbers).

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

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

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

Подробнее