python中range与xrange的区别介绍

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

 代码如下 复制代码
>>> range(5)
[0, 1, 2, 3, 4]
>>> range(1,5)
[1, 2, 3, 4]
>>> range(0,6,2)
[0, 2, 4]

xrange
    函数说明:用法与range完全相同,所不同的是生成的不是一个数组,而是一个生成器。
xrange示例:

 代码如下 复制代码
>>> 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性能优很多,因为不需要一上来就开辟一块很大的内存空间,这两个基本上都是在循环的时候用:

 代码如下 复制代码
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吧,除非你是要返回一个列表。

时间: 2024-09-27 16:31:30

python中range与xrange的区别介绍的相关文章

python中range()与xrange()用法分析_python

本文实例讲述了python中range()与xrange()用法.分享给大家供大家参考,具体如下: 据说range比xrange开销要大,原因是range会直接生成一个list对象,而xrange每次调用返回其中的一个值(参考:http://www.jb51.net/article/50072.htm).于是好奇做了个小小的测试,比较两个函数性能到底有多大差别. (1)测试代码 #!/usr/bin/env python from datetime import * def test_range

Python中range和xrange对比

range     函数说明:range([start,] stop [, step]),根据start与stop指定的范围以及step设定的步长,生成一个序列. range示例: >>> range(5) [0, 1, 2, 3, 4] >>> range(1,5) [1, 2, 3, 4] >>> range(0,6,2) [0, 2, 4] xrange     函数说明:用法与range完全相同,所不同的是生成的不是一个数组,而是一个生成器.

Python中字典的基本知识初步介绍

  这篇文章主要介绍了Python中字典的基本知识初步介绍,是Python入门中的基础知识,需要的朋友可以参考下 字典是可变的,并且可以存储任意数量的Python对象,包括其他容器类型另一个容器类型.字典包括键对(称为项目)及其相应的值. Python字典也被称为关联数组或哈希表.字典的一般语法如下: ? 1 dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'} 可以用下面的方式创建字典: ? 1 2 dict1 = { 'abc':

Python中关键字is与==的区别简述_python

本文以简单示例分析了python中关键字is与 ==的区别,供大家参考一下. 首先说明一下Python学习中几个相关的小知识点. Python中的对象包含三要素:id.type.value其中:id用来唯一标识一个对象,type标识对象的类型,value是对象的值 is判断的是a对象是否就是b对象,是通过id来判断的 ==判断的是a对象的值是否和b对象的值相等,是通过value来判断的 具体示例如下: >>> a=100 >>> b=100.0 >>>

Python中的random()方法的使用介绍

这篇文章主要介绍了Python中的random()方法的使用,是Python入门的基础知识,需要的朋友可以参考下     random()方法返回一个随机浮点数r,使得0是小于或等于r 以及r小于1. 语法 以下是random()方法的语法: ? 1 random ( ) 注意:此函数是无法直接访问的,所以我们需要导入random模块,然后我们需要使用random对象来调用这个函数. 参数 NA 返回值 此方法返回一个随机浮点数r,使得0是小于或等于r以及r小于1. 例子 下面的例子显示了ran

Python中__init__和__new__的区别详解_python

__init__ 方法是什么? 使用Python写过面向对象的代码的同学,可能对 __init__ 方法已经非常熟悉了,__init__ 方法通常用在初始化一个类实例的时候.例如: # -*- coding: utf-8 -*- class Person(object): """Silly Person""" def __init__(self, name, age): self.name = name self.age = age def __

PYTHON中__NEW__和__INIT__的区别例子

__NEW__和__INIT__的区别例子 Python中__new__和__init__用得最多的是__init__,__init__很像PHP,C,JAVA等其他语言中的构造方法,但是__new__也类似于构造方法,而且比__init__更早执行,它们有什么区别?怎么用? __init__ 方法是什么? 使用Python写过面向对象的代码的同学,可能对 __init__ 方法已经非常熟悉了,__init__ 方法通常用在初始化一个类实例的时候.例如: # -*- coding: utf-8

tomcat自定义Web部署文件中docBase和workDir的区别介绍_Tomcat

本文主要介绍的是tomcat自定义Web部署文件中docBase和workDir的区别,下面话不多说,直接来看详细介绍. 首先看这段tomcat配置文件: <Context path="/web" reloadable="false" docBase="D:\CAPRuntime\src\main\webapp" workDir="D:\CAPRuntime\src\main\webapp"/> 其中的docBas

python中的内置函数getattr()介绍及示例_python

在python的官方文档中:getattr()的解释如下: getattr(object, name[, default]) Return the value of the named attribute of object. name must be a string. If the string is the name of one of the object's attributes, the result is the value of that attribute. For examp