转载自:现代魔法学院

原文地址:http://www.nowamagic.net/academy/detail/1302446

range 前面小节已经说明了,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]

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会比range性能优很多,因为不需要一上来就开辟一块很大的内存空间。

xrange 和 range 这两个基本上都是在循环的时候用。

>>> 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会比range性能优很多,因为不需要一上来就开辟一块很大的内存空间。

xrange 和 range 这两个基本上都是在循环的时候用。

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

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

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

输出结果:

<type 'list'>
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]
0 1

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

a = xrange(0,100)
print type(a)
print a
print a[0], a[1]

输出结果:

<type 'xrange'>
xrange(100)
0 1

所以xrange做循环的性能比range好,尤其是返回很大的时候。尽量用xrange吧,除非你是要返回一个列表。

转载于:https://blog.51cto.com/zgw285763054/1891983

Python xrange与range的区别相关推荐

  1. python中bytearray和java中byte[]的区别_Python经典面试题:说说Python中xrange和range的区别?...

    昨晚一小伙后台问xrange和range有啥区别,讲了下他倒领悟的挺快,其实这也是你各面试Python岗位,经常会遇到的Python面试题,长个心眼哈,说不定明年3月你找工作就用上了. 废话不多说,开 ...

  2. 【Python面试】 说说Python中xrange和range的区别?

    往期面试题: 谈谈对 Python 和其他语言的区别? 说说4种常用编码的区别? 说说Python面向对象三大特性? 说说Python中有几种数据类型? 废话不多说,开始今天的题目: 问:说说Pyth ...

  3. python2中xrange比range优点_【Python面试】 说说Python中xrange和range的区别?

    公众号新增加了一个栏目,就是每天给大家解答一道Python常见的面试题,反正每天不贪多,一天一题,正好合适,只希望这个面试栏目,给那些正在准备面试的同学,提供一点点帮助! 小猿会从最基础的面试题开始, ...

  4. python range 步长为负数_【Python面试】 说说Python中xrange和range的区别?

    公众号新增加了一个栏目,就是每天给大家解答一道Python常见的面试题,反正每天不贪多,一天一题,正好合适,只希望这个面试栏目,给那些正在准备面试的同学,提供一点点帮助! 小猿会从最基础的面试题开始, ...

  5. Python经典面试题:说说Python中xrange和range的区别?

    昨晚一小伙后台问xrange和range有啥区别,讲了下他倒领悟的挺快,其实这也是你各面试Python岗位,经常会遇到的Python面试题,长个心眼哈,说不定明年3月你找工作就用上了. 废话不多说,开 ...

  6. python range函数与numpy arange函数,xrange与range的区别

    转自:https://www.cnblogs.com/ymjyqsx/p/6426764.html 1.range()返回的是range object,而np.arange()返回的是numpy.nd ...

  7. python中xrange和range的区别

    2019独角兽企业重金招聘Python工程师标准>>> >>> range(5) [0, 1, 2, 3, 4] >>> range(1,5) [ ...

  8. [转载] Python中的xrange和range的区别

    参考链接: Python中的range()和xrange() 在python2 中 range(start,end,step)返回一个列表,返回的结果是可迭代对象,但不是迭代器.iter()转化为列表 ...

  9. python range函数小数_python range函数与numpy arange函数,xrange与range的区别

    转自:https://www.cnblogs.com/ymjyqsx/p/6426764.html 1.range()返回的是range object,而np.arange()返回的是numpy.nd ...

最新文章

  1. Python中必学知识点:类方法、实例方法和静态方法
  2. 转再次写给我们这些浮躁的程序员
  3. Centos7 Docker 安装与启动_入门试炼01
  4. html5游戏制作入门系列教程(八)
  5. 字符串过滤非数字c语言,【新手】【求思路】如何判断用户输入的字符串中是否含有非数字?...
  6. 跟着百度学PHP[13]-文件上传
  7. Linux 基本命令(二)--cd 常用命令
  8. webpack3 css,webpack3之处理css文件
  9. 使用c语言打印九九乘法表
  10. Excel实现下拉筛选
  11. python8皇后不攻击问题_Python 解决八皇后问题
  12. 支付宝小程序的开发笔记
  13. Cesium开发基础篇 | 04空间数据可视化之Entity
  14. 【Quartz】任务调度
  15. 半导体功率器件静态参数测试仪系统 能测 IGBT. Mosfet. Diode. BJT......
  16. EfficientNet网络解析
  17. ACP敏捷9.敏捷应用场景
  18. 颜值爆表!华为发布新千元旗舰畅享6S
  19. 用python画花瓣-用python画花瓣
  20. Lightroom 中照片的修改信息储存在哪了?

热门文章

  1. 直流电路相关计算机,计算机专业用复杂直流电路习题(各种方法运用).doc
  2. jqplot php,JSON的jqPlot
  3. java后门_@Java Web 程序员,我们一起给程序开个后门吧:让你在保留现场,服务不重启的情况下,执行我们的调试代码...
  4. Word2016如何取消宏已被禁用的提示
  5. 矩阵的直接LU分解法
  6. pyhon 数据类型转换函数
  7. 【Boost】boost库asio详解2——io_service::run函数无任务时退出的问题
  8. asp.net调用opencv类库,实现图像处理显示
  9. 思科发力虚拟化和云服务 推出多款新品
  10. Oracle进阶学习之创建dblink