Почему применение функции над map-объектом очищает его?

iterable = (0,1,2,3,4,)
map_obj = map(str, iterable)
print(list(map_obj))
# Вывод: ['0', '1', '2', '3', '4']
print(list(map_obj))
# Вывод: []

Такая же история и с объектом filter и с другими функциями Почему?


Ответы (1 шт):

Автор решения: CrazyElf

map создаёт итератор, а по итератору можно пройтись только один раз. Чтобы пройтись по итератору ещё раз его надо создать заново. Вы проходитесь второй раз по итератору - и он не возвращает ничего.

→ Ссылка