python3 range 函数
python3 取消了 xrange() 函数,并且和 range() 函数合并为 range()。
python2.7 环境
函数说明:range([start,] stop[, step]),根据start与stop指定的范围以及step设定的步长,生成一个list。xrange([start,] stop[, step])则生成一个生成器
>>> range(8)
[0, 1, 2, 3, 4, 5, 6, 7]
>>> a = range(8)
>>> print(type(a))
<type 'list'>
>>> b = xrange(8)
>>> type(b)
<type 'xrange'>
>>> [ x for x in b]
[0, 1, 2, 3, 4, 5, 6, 7]
但是无论需要的序列多大,每次遍历时xrange消耗相同量的内存。在遍历极端的大序列时,这是相对于range的很大优势。另一个优势也是明显的:当你的代码在遍历已经产生的序列时调用break的话,xrange显然比range要好,因为xrange会消耗更少的内存
python3 环境
函数说明:range([start,] stop[, step]),根据start与stop指定的范围以及step设定的步长,生成一个生成器。
>>> a = range(8)
>>> type(a)
<class 'range'>
>>> [ x for x in a]
[0, 1, 2, 3, 4, 5, 6, 7]
>>> b = xrange(8)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'xrange' is not defined
当调用 xrange() 的时候,python3 环境提示 xrange 没有被定义。而 range() 函数的类型也发生了变化,在 2.7 里面的时候,是 list 类型,但是在 3.7 里面,range() 函数是range 类型。