Что выведет код Senior Итераторы и генераторы обновлено

zip съедает элемент итератора

Вопрос

Что выведет код? По строке на каждый print.

it = iter([1, 2, 3, 4, 5])
pairs = list(zip(it, 'ab'))
print(pairs)
print(list(it))

Попробуйте сами

Напишите, что выведет код: каждый вывод с новой строки.

Показать ответ и разбор

Коротко

Код выведет: [(1, 'a'), (2, 'b')], [4, 5]. zip берёт элементы по очереди слева направо.

Что выведет

[(1, 'a'), (2, 'b')]
[4, 5]

Разбор

zip берёт элементы по очереди слева направо. На третьем шаге он уже вытащил 3 из it, а потом обнаружил, что строка закончилась. Значение 3 потеряно, и в итераторе остаются 4, 5. Поэтому порядок аргументов zip важен, когда один из них разделяемый итератор: короткий ставят первым.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме