When you call zip you are invoking the iterator of the object.
Depending on how it has been code it will work one way or another.
Here you have a explanation.
https://anandology.com/python-practice-book/iterators.html 2
Objects which are supposed to be iterated several times are coded in such a way that, once they get exhausted, they will reset the iterable so that you can iterate over them without reinstanciating.