xrange与range的区别

Zss 发表于:

最大的区别:xrange返回的不是一个列表,而是一个生成器,range返回的是一个列表,使用方法一致

1.range([start,] stop[, step]),根据start与stop指定的范围以及step设定的步长,生成一个序列

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

2.xrange 用法与 range 完全相同,所不同的是生成的不是一个list对象,而是一个生成器

>>> xrange(5)
xrange(5)
>>> list(xrange(5))
[0, 1, 2, 3, 4]
>>> xrange(1,5)
xrange(1, 5)
>>> list(xrange(1,5))
[1, 2, 3, 4]
>>> xrange(0,6,2)
xrange(0, 6, 2)
>>> list(xrange(0,6,2))
[0, 2, 4]

当需要生成较大的列表时建议使用xrange,因为性能更好,用xrange会比range性能优很多,因为不需要一上来就开辟一块很大的内存空间。

3.循环时的使用

for i in range(0, 10):
print i
for i in xrange(0, 10):
print i

这两个输出的结果都是一样的,实际上有很多不同,range会直接生成一个list对象:

a = range(0,10)
print type(a)
print a
print a[0], a[1]

range:输出

<type ‘list’>
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9,]
0 1

xrange:输出

<type ‘xrange’>
xrange(100)
0 1