Draw a comparison between the range() and xrange() in Python

In python, both range() and xrange() functions produces the integer numbers between given start value and stop value.

xrange() function is only available in Python 2, in Python 3 it has been removed but range() function of python 3 works same as xrange() of python 2.

so difference between range() and xrange() functions became relevant only while we are using python 2.

Let's compare range() and xrange() on the basis of functionality, return value, return type, performance & speed test and compatibility.

1. Functionality

Here both range() and xrange() function generates integer numbers within given range i.e range(1,5,1) will produce 1, 2, 3, 4 and xrange (1, 5, 1) will also produce the same. So there is no such difference between them in terms of functionality.

2. Return Value

range() creates a list , i.e range returns a python range objects. range(1,100,1) will generate a python range of 99 integers in a memory at once.

xrange() functions returns an xrange object i.e xrange only stores the range arguments and generates the number on demand. It evaluates lazily instead of generating all numbers at once like range(). Number on demand means, it produces number one by one as for loop moves to the next number. In every iteration of for loop, it generates the next number and assigns it to the iterator variable of for loop.

3. Return Type

range() return type is range object.

xrange() return type is xrange object.

4. Performance and Speed Test

With the help of timeit module to test speed conclusion is drawn that xrange() is found to be faster than the range() function. xrange is faster and also saves memory as we know, xrange() doesn’t generate as static list at the runtime i.e it only keeps one number in memory at a time to consume less memory but range() uses a considerable amount of memeory .

So, if dealing with the extensive number xrange() is better else range.

5. Compatibility

range() is compatible with python 2 and 3.

xrange() is not compatible with python 3.