range与xrange

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

1 print type(range(5))
2 
3 print type(xrange(5))
4 
5 
6 #打印结果:<type 'list'>
7 #         <type 'xrange'>

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

1 print range(5)
2 
3 #打印结果:[0, 1, 2, 3, 4]
4 
5 print xrange(5)
6 
7 #打印结果:xrange(5)

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

 1 import time
 2 
 3 def range_time():
 4     time1 = time.time()
 5     for i in range(0, 1000000):
 6         pass
 7     time2 = time.time()
 8     print time2 - time1
 9 
10 def xrange_time():
11     time1 = time.time()
12     for i in xrange(0, 1000000):
13         pass
14     time2 = time.time()
15     print time2 - time1
16 
17 range_time()
18 xrange_time()
19 
20 #打印结果:0.0380001068115
21 #         0.0179998874664

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

 

注:python在3.x版本已经没有range,把xrange改为了range。

转载于:https://www.cnblogs.com/blogCblog/p/5597442.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值