Python之range和xrange的区别

range()是Python的内置函数,用于创建整数的列表,可以生成递增或者递减的数列。

xrange也有相同的功能, 今天来看下它们之间的不同。

range 函数说明:range([start,] stop[, step]),根据start与stop指定的范围以及step设定的步长。

xrange 函数说明:用法与range完全相同。

range示例:

print range(6)
print type(range(6))
print range(1, 6)
print range(0, 6, 2)


#输出结果
[0, 1, 2, 3, 4, 5]
<type 'list'>
[1, 2, 3, 4, 5]
[0, 2, 4]

xrange示例:

print xrange(6)
print type(xrange(6))
print list(xrange(6))
print xrange(1, 6)
print list(xrange(1, 6))
print list(xrange(0, 6, 2))


#输出结果
xrange(6)
<type 'xrange'>
[0, 1, 2, 3, 4, 5]
xrange(1, 6)
[1, 2, 3, 4, 5]
[0, 2, 4]

由上面的示例可以知道:range生成的是一个列表,而xrange生成的是一个<type 'xrange'>类型,可以使用list(xrange(6))将其转换为列表。因此要生成很大的数字序列的时候,用xrange会比range性能优很多,因为不需要预先开辟一块很大的内存空间,这两个基本上都是在循环的时候用。

对于以下同样遍历100次,这两个输出的结果虽然都是一样的,但实际上有很多不同。

for i in range(0, 100):
    print i

for i in xrange(0, 100):
    print i

range会直接生成一个list对象:

而xrange则不会直接生成一个list,而是每次调用返回其中的一个值:

特别提醒:xrange函数在Python3中已经取消,在python3中,range()这种实现被移除了,保留了xrange()的实现,且将xrange()重新命名成range()。所以Python3不能使用xrange,只能使用range。

在python3中执行以下代码:

a = range(6)
print(type(a))
print(list(a))


#输出结果
<class 'range'>
[0, 1, 2, 3, 4, 5]

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章