This was a change from python 2.X to 3.0 to provide better performance.
In Python 2.X versions, zip() returned a list:
>>> zip(['Blue', 'Bunny', 'Red'],['1','2','3'])
[('Blue', '1'), ('Bunny', '2'), ('Red', '3')]
>>>
However for the sake of saving time, in 3.0 they decided to change the behavior so that zip() returned an iterator instead. The same thing happened with range()... if you type range(5) into 3.0 you'll get an iterator; yet 2.X gives this:
>>> range(5)
[0, 1, 2, 3, 4]
>>>
Try it!
**Note: range() in Python 3.0 is actually xrange() from python 2.X**