What the heck is an xrange?
Pop quiz: how would you implement Python's xrange (known in Python 3.x as range) in Python and without making a list or any other sequence type?
If you answered "with a generator," you'd be wrong! And it's likely because you've only ever used an xrange in code like:
for i in xrange(10):
# do something 10 times
In this case (where the xrange is only used as an "argument" to a for loop), a generator would probably suffice. But, in fact, xrange is implemented as an object, not a function or generator. Why? Let's find out.