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

loops, python, python-2.x, range, xrange

Solution

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 2's `xrange`. To get the list, you have to explicitly use `list(range(...))`.

- `xrange` no longer exists.

Problem

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): ```

Original source

Related problems