转自:http://www.cnblogs.com/zhangjing0502/archive/2012/05/16/2503880.html

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, 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]
  3. 0 1

而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吧,除非你是要返回一个列表。

【Python】range和xrange区别的更多相关文章

  1. Python中的range和xrange区别

    range 函数说明:range([start,] stop[, step]),根据start与stop指定的范围以及step设定的步长,生成一个序列. range示例: >>> r ...

  2. [Python]range与xrange用法对比

    [整理内容]具体如下: 先来看如下示例:>>>x=xrange(0,8)>>> print xxrange(8)>>>print x[0]0> ...

  3. python range() 和xrange()的区别

    Help on built-in function range in module __builtin__: range(...) range(stop) -> list of integers ...

  4. range()和xrange()区别

    版本:Python2.7 1.先看帮助说明 (1)range()返回一个递增或递减的数字列表,列表的元素由三个参数决定       start 表示列表开始的值,默认为0       stop 表示列 ...

  5. python range 和xrange

    对于这两个好像功能都差不多,这两个经常会被搞混,所以今天一定要把这个完全弄清楚. 首先我们看看range: range([start,] stop[, step]),根据start与stop指定的范围 ...

  6. python 基础 2.7 range与xrange的区别

    #/usr/bin/python #coding=utf-8 #@Time :2017/10/25 19:22 #@Auther :liuzhenchuan #@File :range与xrange的 ...

  7. python 中range与xrange的区别

    先来看看range与xrange的用法介绍 help(range)Help on built-in function range in module __builtin__: range(...) r ...

  8. python中range、xrange和randrange的区别

    range 函数说明:range([start,] stop[, step]),根据start与stop指定的范围以及step设定的步长,生成一个列表. xrange 函数说明:和range 的用法完 ...

  9. range和xrange的区别详解

    两种用法介绍如下:1.range([start], stop[, step])返回等差数列.构建等差数列,起点是start,终点是stop,但不包含stop,公差是step.start和step是可选 ...

随机推荐

  1. HTML的内联元素换行问题

    一般a.span.label多个组合,需要换行时,使用以下CSS来处理: white-space: nowrap; display: inline-block;

  2. "当前方法的代码已经过优化,无法计算表达式的值"的这个错误的解决方案!!!

    http://blog.useasp.net/archive/2012/09/12/how-to-debug-dotnet-framework-source-when-throw-the-code-o ...

  3. EF方便的添加一条信息...

    //刚开始通过EF添加数据都是这样的...↓ var db = new DBEntities() T_User t_userinfo = new T_User() { Type = "typ ...

  4. cf#305 Mike and Foam(容斥)

    C. Mike and Foam time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...

  5. Swift3.0P1 语法指南——字符串与字符

    原档:https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programmi ...

  6. 全文检索引擎Solr系列——整合MySQL、MongoDB

    MySQL 拷贝mysql-connector-java-5.1.25-bin.jar到E:\solr-4.8.0\example\solr-webapp\webapp\WEB-INF\lib目录下面 ...

  7. PL/SQL创建数据表空间

    创建数据表空间create tablespace stbss datafile 'E:\oracle\product\10.2.0\oradata\orcl\stbss_temp01.dbf' siz ...

  8. Nginx初学者指南

    Starting, Stopping, and Reloading Configuration To start nginx, run the executable file. Once nginx ...

  9. ajax验证登录注册

    <form id="form1" onsubmit="return false;"> <table id="login-table& ...

  10. hiho #1284 机会渺茫

    #1284 : 机会渺茫 时间限制:5000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi最近在追求一名学数学的女生小Z.小Z其实是想拒绝他的,但是找不到好的说辞,于是提出了这样的要 ...