您的位置:首页 > 其它

range与xrange

2016-06-19 09:09 211 查看
range与xrange的用法是完全相同的,不同的是返回结果不同:range返回的是一个list,而xrange返回的是一个生成器。可以来看下

print type(range(5))

print type(xrange(5))

#打印结果:<type 'list'>
#         <type 'xrange'>


可以看到他们的返回类型是不一样的,一个是list,一个是xrange,也就是说range返回时需要开辟一个内存空间来存储这个list,而xrange是每次调用返回的其中一个值,也就是通过某种算法来推算出后续的值,这样就避免了不必创建完整的list。

print range(5)

#打印结果:[0, 1, 2, 3, 4]

print xrange(5)

#打印结果:xrange(5)


上面可以看到,range是创建了一个完整的list的,而xrange则不是。xrange这样做的好处是比range占用内存小、效率高,尤其是需要返回很大的时候。下面可以来看下这段代码:

import time

def range_time():
time1 = time.time()
for i in range(0, 1000000):
pass
time2 = time.time()
print time2 - time1

def xrange_time():
time1 = time.time()
for i in xrange(0, 1000000):
pass
time2 = time.time()
print time2 - time1

range_time()
xrange_time()

#打印结果:0.0380001068115
#         0.0179998874664


上面可以看到range执行时间为0.0380001068115,xrange为0.0179998874664,xrange效率明显比range高,所以尽量用xrange,除非你需要返回一个list。

注:python在3.x版本已经没有range,把xrange改为了range。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: