I'am not sure what are you calling "iterator" to.
If you refer to the "for loop", its just make sure processing time is significant enough for GH to be printed.
If you refer to Xrange , there is not particular reason. I started my test using really really big numbers (dont ask my why), so I considered a good idea to use xrange because of its better memory management, but range could also be valid as long as this is just a test code (I guess "range" is faster than "xrange", I'am not sure)
P.S: after looking at google, I see that the "for loop" is considered an iterator, and that xrange is not an iterator but a "immutable sequence", as a tuple. Lesson learned!