range vs xrange in Python

from __future__ import print_function
import sys

r = range(1000)
x = xrange(1000)

for v in r:   # 0..999
for v in x:   # 0..999

print(sys.getsizeof(r))  # 8072
print(sys.getsizeof(x))  # 40

In Python 2 range creates a list of values range(from, to, step) and xrnage creates and iterator. In Python 3 range creates the iterator and if really necesary then list(range()) can create the list.

range vs. xrange in Python