Range和XRange的区别

Python官方文档里是这样说的:

xrange([start,] stop[, step])This function is very similar to range(), but returns an ``xrange object'' instead of a list. This is an opaque sequence type which yields the same values as the corresponding list, without actually storing them all simultaneously. The advantage of xrange() over range() is minimal (since xrange() still has to create the values when asked for them) except when a very large range is used on a memory-starved machine or when all of the range's elements are never used (such as when the loop is usually terminated with break).Note: xrange() is intended to be simple and fast. Implementations may impose restrictions to achieve this. The C implementation of Python restricts all arguments to native C longs ("short" Python integers), and also requires that the number of elements fit in a native C long.

range可以返回一个可以用于所有目的的普通列表对象,而xrange将返回一个特殊目的的对象,尤其适用于迭代操作,但是xrange并不返回一个迭代器,如果需要这样一个迭代器,可以调用iter(xrange(x))。xrange返回的特殊目的对象比range返回的列表对象消耗较少的内存(范围比较大的时候)。但是对特殊目的对象执行循环操作的开销略微高于对列表执行循环的开销。

>>> print range(5)
[0, 1, 2, 3, 4]
>>> print xrange(5)
xrange(5)

其中,range将返回一个普通列表,但是xrange将返回一个特殊目的对象,将显示为其自身的特殊方式。

 

posted @ 2012-04-27 18:36  止於至善  阅读(2763)  评论(3编辑  收藏  举报