python中xrange和range的异同

    range  
        函数说明:range([start,] stop[, step]),根据start与stop指定的范围以及step设定的步长,生成一个序列。  
    range示例:   
      
    1.>>> range(5)   
    2.[0, 1, 2, 3, 4]   
    3.>>> range(1,5)   
    4.[1, 2, 3, 4]   
    5.>>> range(0,6,2)  
    6.[0, 2, 4]  
      
    xrange  
        函数说明:用法与range完全相同,所不同的是生成的不是一个数组,而是一个生成器。  
    xrange示例:   
      
    1.>>> xrange(5)  
    2.xrange(5)  
    3.>>> list(xrange(5))  
    4.[0, 1, 2, 3, 4]  
    5.>>> xrange(1,5)  
    6.xrange(1, 5)  
    7.>>> list(xrange(1,5))  
    8.[1, 2, 3, 4]  
    9.>>> xrange(0,6,2)  
    10.xrange(0, 6, 2)  
    11.>>> list(xrange(0,6,2))  
    12.[0, 2, 4]  
      
        由上面的示例可以知道:要生成很大的数字序列的时候,用xrange会比range性能优很多,因为不需要一上来就开辟一块很大的内存空间,这两个基本上都是在循环的时候用:  
      
    1.for i in range(0, 100):   
    2.print i   
    3.for i in xrange(0, 100):   
    4.print i   
      
        这两个输出的结果都是一样的,实际上有很多不同,range会直接生成一个list对象:  
      
    1.a = range(0,100)   
    2.print type(a)   
    3.print a   
    4.print a[0], a[1]   
      
        输出结果:  
      
    1.<type 'list'>  
    2.[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,.. ,99]  

[python] view plain copy

        而xrange则不会直接生成一个list,而是每次调用返回其中的一个值:  
      
    1.a = xrange(0,100)   
    2.print type(a)   
    3.print a   
    4.print a[0], a[1]   
      
        输出结果:  
      
    1.<type 'xrange'>  
    2.xrange(100)  
    3.0 1  
      
        所以xrange做循环的性能比range好,尤其是返回很大的时候,尽量用xrange吧,除非你是要返回一个列表。  


顶
    1

踩
    0

 
 

    上一篇
    python re模块
    下一篇
    VS2010快捷键

我的同类文章
Python(15)

    •python用于url解码和中文解析的小脚本2013-09-25阅读1049
    •python 特殊函数的用法2012-07-19阅读2276
    •Python之isinstance2012-05-28阅读49872
    •Python之全局变量2012-05-25阅读740
    •python特殊属性和方法的运用2012-05-15阅读6867

    •python re模块2012-07-23阅读1014
    •理解Python的双下划线命名(转过来慢慢理解)2012-05-30阅读3412
    •python time模块详解2012-05-26阅读832
    •Python 引用多个模块,调用模块中的函数时...要注意的地方2012-05-24阅读3599
    •Python集合(set)类型的操作2012-05-07阅读232902

更多文章

猜你在找
    Python自动化开发基础 装饰器-异常处理-面向对象编程 day4
    Python自动化开发基础 列表-字典-IO处理 day2
    Python 零基础到实战
    Python基础编程1小时快速实战掌握
    使用python操作Oracle
    python中xrange和range的异同
    python中xrange和range的异同
    python中xrange和range的异同
    python中xrange和range的异同
    Python中range和xrange的异同之处

关闭
查看评论

  暂无评论

您还没有登录,请[登录]或[注册]
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
核心技术类目
全部主题 Hadoop AWS 移动游戏 Java Android iOS Swift 智能硬件 Docker OpenStack VPN Spark ERP IE10 Eclipse CRM JavaScript 数据库 Ubuntu NFC WAP jQuery BI HTML5 Spring Apache .NET API HTML SDK IIS Fedora XML LBS Unity Splashtop UML components Windows Mobile Rails QEMU KDE Cassandra CloudStack FTC coremail OPhone CouchBase 云计算 iOS6 Rackspace Web App SpringSide Maemo Compuware 大数据 aptech Perl Tornado Ruby Hibernate ThinkPHP HBase Pure Solr Angular Cloud Foundry Redis Scala Django Bootstrap

    个人资料

    [访问我的空间]
    农村的我
        访问:986265次
        积分:5293
        等级:
        排名:第4091名
        原创:2篇
        转载:264篇
        译文:1篇
        评论:69条

    文章搜索

    文章分类

    Python(16)
    MySQL(14)
    兴趣(4)
    Eclipse(1)
    SqlServer(2)
    VS2010(4)
    JS(67)
    CSS(26)
    阅读(8)
    趣味阅读(5)
    C(1)
    html(5)
    需求 规划 研发(1)
    json(1)
    c++(92)
    svn(1)
    sql(4)
    MongoDB(2)
    qgis(1)
    tuxij(0)
    opengl(5)
    线性代数 坐标转换(0)
    线性代数(1)
    坐标转换(1)
    cmd(1)
    qt(2)
    pcl(2)

    文章存档

    2017年02月(3)
    2017年01月(2)
    2016年12月(3)
    2016年11月(5)
    2016年09月(5)
    展开

    阅读排行 

    Python集合(set)类型的操作(233102)
    Python 列表(list)、字典(dict)、字符串(string)常用基本操作小结(151215)
    Html中CSS之去除li前面的小黑点,和ul、LI部分属性方法(86042)
    Python之isinstance(49926)
    查看mysql表结构和表创建语句的方法(43308)
    Js apply()使用详解(41097)
    js实现input:file的click事件(29291)
    网页打开新窗口——Window.open()详解(22258)
    JS windows.open()详解(12549)
    js中条件三目运算符?:(11666)

    评论排行

    Python集合(set)类型的操作(19)
    Js apply()使用详解(13)
    js实现input:file的click事件(7)
    Python 列表(list)、字典(dict)、字符串(string)常用基本操作小结(6)
    vs2010无可用源 (推荐第二种)(5)
    Python之isinstance(5)
    在MFC中怎么样让控件的大小随着主窗体大小改变而改变(3)
    关于MySQL里的found_row()和row_count()解释及用法(很好很强大!!!)(3)
    jq插件的编写方法(自定义jq插件)(2)
    python之repr()和str()的区别(1)

    推荐文章

        * 造轮子 | 如何设计一个面向协议的 iOS 网络请求库
        * Android新特性介绍,ConstraintLayout完全解析
        * Android 热修复 Tinker接入及源码浅析
        * 创业公司做数据分析(六)数据仓库的建设
        * 【死磕Java并发】-----深入分析synchronized的实现原理

    最新评论

    Python之isinstance

    农村的我: 程序媛??
    Python集合(set)类型的操作

    Mr_Buzz: 第31行>>> c = 可以写成 c = list(b) 直接转成list
    Python之isinstance

    葡萄提子: 我也喜欢你的头像啊
    关于MySQL里的found_row()和row_count()解释及用法(很好很强大!!!)

    likeflower950: 都经过测试吗?为什么我这边测试一直都是-1
    Python之isinstance

    zhouzizan1301: 这头像屌爆了
    Python 列表(list)、字典(dict)、字符串(string)常用基本操作小结

    csdnwanqian: 好文
    Python 列表(list)、字典(dict)、字符串(string)常用基本操作小结

    csdnwanqian: int(str,base) #变成base进制整型数,int("11",2) 结果为2 cha...
    Python 列表(list)、字典(dict)、字符串(string)常用基本操作小结

    csdnwanqian: S.lowercase() str have no this attribute
    jq插件的编写方法(自定义jq插件)

    ruchiruzui2012: 任意对象调用方法的插件方式怎么写呢?
    Python集合(set)类型的操作

    newpowersky: 真的详细!!!!!

 

而xrange则不会直接生成一个list,而是每次调用返回其中的一个值:  
  
1.a = xrange(0,100)   
2.print type(a)   
3.print a   
4.print a[0], a[1]   
  
    输出结果:  
  
1.<type 'xrange'>  
2.xrange(100)  
3.0 1  
  
    所以xrange做循环的性能比range好,尤其是返回很大的时候,尽量用xrange吧,除非你是要返回一个列表。

 

转载于:https://www.cnblogs.com/zhuzhubaoya/p/6381045.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值