Jak zapobiec wyczerpaniu iteratora w Pythonie (3.x)?

Jeśli utworzę dwie listy i rozpakuję je

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

Następnie wpisuję z na dwie listy

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

Wtedy zawartość l1 okazuje się być dobra [(1,7), (2,8), (3,9)], ale zawartość l2 jest po prostu [].

Myślę, że jest to ogólne zachowanie Pythona w odniesieniu do iterable. Ale jako początkujący programista migrujący z rodziny C nie ma to dla mnie sensu. Dlaczego tak się zachowuje? A czy istnieje sposób na ominięcie tego problemu?

Mam na myśli, tak w tym konkretnym przykładzie, mogę po prostu skopiować l1 do l2, ale ogólnie czy istnieje sposób na „zresetowanie” tego, czego Python używa do iteracji „z” po tym, jak raz iteruję?

questionAnswers(5)

yourAnswerToTheQuestion