range与xrange
2016-06-19 09:09
211 查看
range与xrange的用法是完全相同的,不同的是返回结果不同:range返回的是一个list,而xrange返回的是一个生成器。可以来看下
可以看到他们的返回类型是不一样的,一个是list,一个是xrange,也就是说range返回时需要开辟一个内存空间来存储这个list,而xrange是每次调用返回的其中一个值,也就是通过某种算法来推算出后续的值,这样就避免了不必创建完整的list。
上面可以看到,range是创建了一个完整的list的,而xrange则不是。xrange这样做的好处是比range占用内存小、效率高,尤其是需要返回很大的时候。下面可以来看下这段代码:
上面可以看到range执行时间为0.0380001068115,xrange为0.0179998874664,xrange效率明显比range高,所以尽量用xrange,除非你需要返回一个list。
注:python在3.x版本已经没有range,把xrange改为了range。
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。
相关文章推荐
- 数组中的逆序对37
- phpstrom2016.1.2运行项目设置
- Sublime Text3注册码(可用)
- 设计模式整理_命令模式
- Android总结--SQLite
- shell脚本设置守护进程
- 判别模型(Discriminative model)和生成模型(Generative model)
- 某P保护之调戏权限清0的学习。
- ORA-01804: failure to initialize timezone information
- linux驱动一 设备号的分配和管理
- 人月神话阅读笔记03
- 人月神话阅读笔记02
- 附加作业
- MFC中List box的用法
- 【续】关于对MSB/LSB写0时的步骤
- Kali Linux 新手折腾笔记
- 动态规划
- 礼物[Codevs1321]
- Fragment 使用解析
- 在Visual Studio 2010/2012/2013/2015上使用C#开发Android/IOS安装包和操作步骤