Что создаёт выражение squares = (x * x for x in xs)?

AСписок — круглые скобки тоже создают список, просто без квадратных.
BКортеж — скобки вокруг выражения всегда дают кортеж, как в (1, 2, 3).
CФункцию-генератор, аналог def-функции с yield, вызываемую позже.
DГенератор (generator expression), который выдаёт значения по одному при итерации.
Правильный ответ. Генераторное выражение создаёт итератор с ленивыми вычислениями.

Разбор

В отличие от list comprehension [x * x for x in xs], генераторное выражение (x * x for x in xs) не вычисляет все значения сразу и не хранит их в списке. Оно возвращает объект генератора, который отдаёт элементы по мере запроса через next() или в цикле for.

Проверь себя · 1/3разбор после ответа
Функция-генератор def evens(xs): for x in xs: if x % 2 == 0: yield x. Чему равен результат list(evens([1, 2, 3, 4]))?
Тренировать Python в Telegram

Ещё вопросы по теме «Итераторы и генераторы»