1 结论: 全用xrange,除非你需要使用返回的列表

2 实验一:性能对比

实验环境:win7 ,64位系统 python2.7

import time
StartTime=time.time()
count =0
for i in range (100000000): # 这里的8个零 内存变动峰值2555,000kb ,耗时 129s
count=count+1
EndTime=time.time()
print "cost time is:",(EndTime-StartTime)
import time
StartTime=time.time()
count =0
for i in xrange (100000000): # 这里的8个零 内存3832kb ,耗时 8s
count=count+1
EndTime=time.time()
print "cost time is:",(EndTime-StartTime)

3 实验二 原理探究

a = range(5)
print type(a) # 输出 <type 'list'>
print a #输出 [0 1 2 3 4 ]
print a[0], a[1] #输出 0 1
a = xrange(5)
print type(a) # 输出 <type 'xrange'>
print a # 输出 xrange(5)
print a[0], a[1] #输出 0 1

解释:range 会生成一个list ,而 xrange 每次调用返回一个 “xrange object” 。

实验1 的数据是三次实验,取平均值的结果且数据间的差异不大。

实验比较python中的range和xrange的更多相关文章

  1. Python中的range和xrange区别

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

  2. python中的range与xrange

    range 也是一种类型(type),它是一个数字的序列(s sequence of numbers),而且是不可变的,通常用在for循环中. class range(stop) class rang ...

  3. 使用Java迭代器实现Python中的range

    如果要想迭代一个类的对象,那么该类必须实现 Iterable 接口,然后通过 iterator 方法返回一个 Iterator 实例. Range 类实现了Python中的range的所有用法,如:r ...

  4. python学习之range()和xrange()

    在python2中,xrange()返回一个xrange对象,注意这个对象并不是生成器,也不是迭代器,但是是迭代对象. 而range()则返回列表对象. >>> range(10) ...

  5. Python中的range函数用法

    函数原型:range(start, end, scan): 参数含义:start:计数从start开始.默认是从0开始.例如range(5)等价于range(0, 5); end:技术到end结束,但 ...

  6. 模仿python中的range功能

    主要是利用生成器来写的一个函数: def myxrange(start, stop = None, step = 1): #这里的stop一定要等于None,不能等于0,要不然会有好多问题 if st ...

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

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

  8. python开发_python中的range()函数

    python中的range()函数的功能hen强大,所以我觉得很有必要和大家分享一下 就好像其API中所描述的: If you do need to iterate over a sequence o ...

  9. 【Python那些事儿之十】range()和xrange()

    by Harrison Feng in Python 无论是range()还是xrange()都是Python里的内置函数.这个两个内置函数最常用在for循环中.例如: >>> fo ...

随机推荐

  1. Lucene.Net 站内搜索

    Lucene.Net 站内搜索 一  全文检索: like查询是全表扫描(为性能杀手)Lucene.Net搜索引擎,开源,而sql搜索引擎是收费的Lucene.Net只是一个全文检索开发包(只是帮我们 ...

  2. golang获取字符串长度需要注意的地方

    中文长度,直接贴代码 package main import ( "fmt" "unicode/utf8" ) func main() { aa := &quo ...

  3. [svn]svn merge

    转:http://blog.csdn.net/keda8997110/article/details/21813035 Step by Step 完成merge 目录: Branch的必要性 1.本地 ...

  4. Android:单元测试Junit的配置

    在实际开发中,开发android软件的过程需要不断地进行测试.而使用Junit测试框架,侧是正规Android开发的必用技术,在Junit中可以得到组件,可以模拟发送事件和检测程序处理的正确性.... ...

  5. MySql5.6 Window超详细安装教程

    林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 目录 一.安装包准备二.开始安装三.验证安装四.客户端工具 一.安装包准备 1.下载MySql ...

  6. 内存修改mfc

    vc++6.0,内涵图

  7. SecureCRT自动登录

  8. smartgit document Rebase

    The Rebase command allows you to apply commits from one branch to another. Rebase can be viewed as m ...

  9. c#unity

    using UnityEngine;using System.Collections; public class PacmanMove : MonoBehaviour { public float s ...

  10. centos下的一些命令

    1.查看版本 cat /etc/redhat-release 2.安装VIM yum -y install vim-enhanced 3.升级系统 yum -y update 4.把 vi 替换为 v ...