What is the difference between range and xrange functions in Python 2.X?

Teifion picture Teifion · Sep 18, 2008 · Viewed 392.6k times · Source

Apparently xrange is faster but I have no idea why it's faster (and no proof besides the anecdotal so far that it is faster) or what besides that is different about

for i in range(0, 20):
for i in xrange(0, 20):

Answer

Charles picture Charles · Sep 18, 2008

In Python 2.x:

  • range creates a list, so if you do range(1, 10000000) it creates a list in memory with 9999999 elements.

  • xrange is a sequence object that evaluates lazily.

In Python 3, range does the equivalent of python's xrange, and to get the list, you have to use list(range(...)).