转自: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. nginx TCP 代理& windows傻瓜式安装

    一.下载nginx Windows http://nginx.org/en/download.html 二.解压到目录 三.进入目录并start nginx.exe即可启动 cd d:/java/ng ...

  2. Linq→join中指定多个条件

    还是习惯先撸一段SQL * FROM User_Pic P AND P.Guid = R.UserPicGuid ORDER BY PicSize DESC 然后发现Linq中的join不能多条件.. ...

  3. JavaWeb学习总结(五十一)——邮件的发送与接收原理

    一. 邮件开发涉及到的一些基本概念 1.1.邮件服务器和电子邮箱 要在Internet上提供电子邮件功能,必须有专门的电子邮件服务器.例如现在Internet很多提供邮件服务的厂商:sina.sohu ...

  4. jquery 获取datagrid行数

    var data = $('#dg').datagrid('getData'); alert('总数据量:' + data.total)//注意你的数据源一定要定义了total,要不会为undefin ...

  5. [Linux] Chang DNS Setting on Linux

    主机的虚拟机使用 NAT 模式时, NAT的DNS不好用.于是需要将虚拟机的DNS改成和主机的一样,这样虚拟机也可以请求互联网资源. Linux的DNS 服务器定义在 /etc/resolv.conf

  6. PHP安装laravel(win+linux)

    作为一名不优秀的程序猿,忙碌的四月终于结束了,五一大假的最后一天,终于有时间来整理整理这段时间的收获了. 一.laravel介绍 首先看看http://www.sitepoint.com/网站做的一个 ...

  7. Swift3.0P1 语法指南——基础

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

  8. ajax访问 aspx.cs后台

    --前台$.ajax({ type: "POST", contentType: "application/json", url: "WebForm2. ...

  9. iOS开发——UI进阶篇(五)通知、代理、kvo的应用和对比,购物车

    一.通知 1.通知中心(NSNotificationCenter)每一个应用程序都有一个通知中心(NSNotificationCenter)实例,专门负责协助不同对象之间的消息通信任何一个对象都可以向 ...

  10. ORA-02287: 此处不允许序号

    今天使用 insert into select 时出现了这个异常,感觉很诡异,去metalink查了下资料,找出了错误原因,记录下来. SQL> CREATE TABLE test_baser0 ...