range返回的是一个list
xrange返回的一个xrange对象,每次调用会返回其中一个值,不能用next方法调用,可以用for循环。
要生成很大的数字序列的时候,用xrange会比range性能优很多,因为不需要一上来就开辟一块很大的内存空间,这两个基本上都是在循环的时候用
In [1]: a = xrange(10)
In [2]: type(a)
Out[2]: xrange
In [3]: from collections import Iterator
In [4]: isinstance(a,Iterator)
Out[4]: False
In [5]: def xrange(end):
...: i = 0
...: while i < end:
...: yield i
...: i += 1
...:
In [6]: a = xrange(10)
In [7]: type(a)
Out[7]: generator
In [8]: isinstance(a,Iterator)
Out[8]: True
网友评论