python中xrange与range的区别
range(start, stop, step),根据start与stop指定的范围以及step设定的步长,start默认是0开始,这里stop值取不到,生成一个序列
>>> range(5)
range(0, 5)
>>> list(range(5))
[0, 1, 2, 3, 4]
>>> list(range(1,5))
[1, 2, 3, 4]
>>> list(range(0,5,2))
[0, 2, 4]
>>> list(range(0,6,2))
[0, 2, 4]
xrange 用法与 range 完全相同,同样是xrange(start, stop, step),所不同的是生成的不是一个list对象,而是一个生成器
>>> xrange(5)
xrange(0, 5)
>>> list(xrange(5))
[0, 1, 2, 3, 4]
>>> list(xrange(1,5))
[1, 2, 3, 4]
>>> list(xrange(0,5,2))
[0, 2, 4]
>>> list(xrange(0,6,2))
[0, 2, 4]
要生成很大的数字序列的时候,range会生成一个列表,用xrange则不会,xrange此时会比range性能优很多,因为不需要一上来就开辟一块很大的内存空间,需要的时候再进行调用
xrange 和 range 这两个基本上都是在循环的时候用,且功能一样
for i in range(0, 100):
print i
for i in xrange(0, 100):
print i
但是现在python3.6版本的range好像已经融合了xrange的功能,且输出的类型定义为一个类
>>> p=range(0,50)
>>> print(type(p))
<class 'range'>
>>> print(p)
range(0, 50)