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

A[1, 2, 3, 4]
B[1, 3]
C[2, 4]
D2
Правильный ответ. yield отдаёт только подходящие значения, а list(...) материализует генератор.

Разбор

Генератор проходит по xs и делает yield x только для чётных x. Поэтому при входе [1, 2, 3, 4] будут отданы 2 и 4. Оборачивание в list(...) просто собирает все выданные элементы в список.

Проверь себя · 1/3разбор после ответа
Дан генератор: def gen(): print('A'); yield 1; print('B'); yield 2. Сразу после g = gen() что будет выведено в консоль?
Тренировать Python в Telegram

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