Por que ou por que não?
range(1000)é a list, xrange(1000)é um objeto que age como um generator(embora certamente não seja um). Além disso, xrangeé mais rápido. Você pode import timeit from timeite, em seguida, fazer um método que só tem for i in xrange: passe outro para range, em seguida, fazer timeit(method1)e timeit(method2)e, vejam só, xrange é quase duas vezes mais rápido às vezes (que é quando você não precisa de uma lista). (Para mim, para i in xrange(1000):passvs para i in range(1000):passlevou 13.316725969314575vs 21.190124988555908segundos, respectivamente - que é um monte.)