文档中对range与xrange的介绍如下:
range([start], stop[,step])
This is a versatile function to create lists containing arithmetic progressions. It is most often used in for loops.
xrange([start], stop[,step])
This function is very similar to range(),but returns an “xrange object” instead of alist.
从文档中可以看出,两者的区别很小,一般被用于循环语句中。
for i in range(0,100):
print i
for i in xrange(0,100):
print i
这两段代码的输出结果是一样的,但是我们可以通过另外的两段代码来寻找它们之间的区别
a = range(0,100)
type(a)
b=xrange(0,100)
type(b)
Result:
<type 'list'>
<type 'xrange'>
从上述结果可以看出range()会直接生成list对象,xrange()则不会,而是每次调用返回其中的一个值
故xrange()做循环的性能比range()要好,除非需要返回一个list,否则尽量使用xrange()。