Есть it = iter([1, 2, 3]). Выполнили next(it) два раза, а затем запустили цикл for x in it: print(x). Что будет напечатано?
AБудет напечатано 1, 2, 3.
BБудет напечатано только 3.
CБудет напечатано только 1.
DНичего не будет напечатано.
Правильный ответ. Iterator продолжает с текущей позиции;
next() уже «съел» первые элементы.Разбор
Два вызова next(it) последовательно забрали 1 и 2. Цикл for продолжит чтение того же iterator и получит только оставшееся значение 3. Это удобно, но может стать багом, если вы не ожидали, что iterator разделяется между next() и for.
Проверь себя · 1/3разбор после ответа
Что создаёт выражение
squares = (x * x for x in xs)?Ещё вопросы по теме «Итераторы и генераторы»
- Есть `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)` оказался пустым. Почему?
- Все вопросы по «Итераторы и генераторы» →