Есть it = iter(['a', 'b']). Что вернёт самый первый вызов next(it) сразу после создания итератора?
AПервый элемент
'a'BВторой элемент
'b'CПустое значение
NoneDИсключение
StopIterationПравильный ответ. Свежесозданный итератор всегда стартует с первого элемента последовательности, и первый
next() возвращает именно его.Разбор
iter(['a', 'b']) создаёт итератор, указатель которого стоит перед началом. Первый вызов next(it) продвигает указатель и возвращает 'a'. Второй вызов даст 'b', а третий — поднимет StopIteration, так как элементов больше нет. next без значения по умолчанию никогда не возвращает None сам по себе: либо отдаёт следующий элемент, либо бросает StopIteration.
Проверь себя · 1/3разбор после ответа
Что создаёт выражение
squares = (x * x for x in xs)?Ещё вопросы по теме «Итераторы и генераторы»
- Есть `xs = [1, 2, 3]` и `it = iter(xs)`. Сначала выполняется `a = list(it)`, а затем `b = list(it)`. Чему равно `b`?
- Дан генератор: `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)` оказался пустым словарём. Почему?
- Что произойдёт при выполнении `it = iter([])` и затем `next(it)`?
- Все вопросы по «Итераторы и генераторы» →