¿Cómo evitar que el iterador se agote en Python (3.x)?

Si creo dos listas y las comprimo.

a=[1,2,3]
b=[7,8,9]
z=zip(a,b)

Luego escribo z en dos listas

l1=list(z)
l2=list(z)

Entonces el contenido de l1 está bien [(1,7), (2,8), (3,9)], pero el contenido de l2 es solo [].

Supongo que este es el comportamiento general de python con respecto a iterables. Pero como programador novato que migra de la familia C, esto no tiene sentido para mí. ¿Por qué se comporta de esa manera? ¿Y hay una manera de superar este problema?

Quiero decir, sí, en este ejemplo en particular, solo puedo copiar l1 en l2, pero en general, ¿hay una manera de 'reiniciar' lo que Python usa para iterar 'z' después de iterarlo una vez?