Дан генератор def gen(): yield 1; yield 2; yield 3. Выполнили g = gen(), first = next(g), rest = list(g). Чему равно rest?
A
[1, 2, 3]B
[1, 2]C
[3]D
[2, 3]Правильный ответ. Генератор хранит состояние: после
next(g) он продолжит с места остановки.Разбор
Вызов next(g) забирает первый yield (1) и переносит исполнение генератора дальше. Затем list(g) забирает оставшиеся значения, которые ещё не были выданы: 2 и 3. Поэтому rest равно [2, 3].
Проверь себя · 1/3разбор после ответа
Есть
xs = [1, 2, 3] и it = iter(xs). Сначала выполняется a = list(it), а затем b = list(it). Чему равно b?Ещё вопросы по теме «Итераторы и генераторы»
- Есть `xs = [1, 2, 3]` и `it = iter(xs)`. Сначала выполняется `a = list(it)`, а затем `b = list(it)`. Чему равно `b`?
- Есть `it = iter(['a', 'b'])`. Что вернёт вызов `next(it)`?
- Дан генератор: `def gen(): print('A'); yield 1; print('B'); yield 2`. Сразу после `g = gen()` что будет выведено в консоль?
- Что создаёт выражение `squares = (x * x for x in xs)`?
- В отладке вы сделали `pairs = zip(users, spends)`, затем `debug = list(pairs)`. После этого `d = dict(pairs)` оказался пустым. Почему?
- Все вопросы по «Итераторы и генераторы» →