python3 range() 函数和 xrange() 函数

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))

>>> b = xrange(8)
>>> type(b)

>>> [ 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)

>>> [ x for x in a]
[0, 1, 2, 3, 4, 5, 6, 7]

>>> b = xrange(8)
Traceback (most recent call last):
  File "", line 1, in 
NameError: name 'xrange' is not defined

当调用 xrange() 的时候,python3 环境提示 xrange 没有被定义。而 range() 函数的类型也发生了变化,在 2.7 里面的时候,是 list 类型,但是在 3.7 里面,range() 函数是range 类型。

你可能感兴趣的:(python3 range() 函数和 xrange() 函数)