python中xrange()和range()函数的区别使用:
1.range()函数:
函数说明:range([start,] stop[, step]),根据start与stop指定的范围以及step设定的步长,生成一个序列。
>>> #range()函数不支持0参数
...
>>> range()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: range expected at least 1 arguments, got 0
>>> #一个参数的range()
...
>>> range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> #两个参数的range()
...
>>> range(1,20)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
>>> #带步长的range()函数
...
>>> range(1,20,2)
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
>>>
2.xrange()函数:
函数说明:用法与range完全相同,所不同的是生成的不是一个数组,而是一个生成器。
>>> #由以上的演示可以知道,range()函数生成的是一个数组“[]”但是用xrange()生成的是一个生成器
...
>>> xrange(10)
xrange(10)
>>> list(xrange(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> xrange(1,10)
xrange(1, 10)
>>> list(xrange(1,10))
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> xrange(1,20,2)
xrange(1, 21, 2)
>>> list(xrange(1,21,2))
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
>>> #xrange()同样不支持0参数调用
...
>>> xrange()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: xrange() requires 1-3 int arguments
>>>
由上面的示例可以知道:要生成很大的数字序列的时候,用xrange会比range性能优很多,因为不需要一上来就开辟一块很大的内存空间,这两个基本上都是在循环的时候用,可以说是延迟执行的。
>>> for x in range(1,10):
... print x
...
1
2
3
4
5
6
7
8
9
>>> for y in xrange(1,10):
... print y
...
1
2
3
4
5
6
7
8
9
>>>
这两个输出的结果都是一样的,实际上有很多不同,range会直接生成一个list对象:
>>> b = range(0,100)
>>> print type(b)
<type 'list'>
>>> print b
[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]
>>> print b[0],b[10]
0 10
>>>
而xrange则不会直接生成一个list,而是每次调用返回其中的一个值:
>>> c = xrange(1,100)
>>> print type(c)
<type 'xrange'>
>>> print c
xrange(1, 100)
>>> print c[1],c[2]
2 3
>>>
所以xrange做循环的性能比range好,尤其是返回很大的时候,尽量用xrange吧,除非你是要返回一个列表。
参考链接:http://ciniao.me/article.php?id=17
python中xrange()和range()函数的区别使用:的更多相关文章
- Python中str()与repr()函数的区别——repr() 的输出追求明确性,除了对象内容,还需要展示出对象的数据类型信息,适合开发和调试阶段使用
Python中str()与repr()函数的区别 from:https://www.jianshu.com/p/2a41315ca47e 在 Python 中要将某一类型的变量或者常量转换为字符串对象 ...
- Python 中xrange和range区别
先看看Python help()的说明 help(range) Help on built-in function range in module __builtin__: range(...) ra ...
- python中xrange和range(转)
说到序列,我们第一想到的是一组有序元素组成的集合.同时,每个元素都有唯一的下标作为索引. 在Python中,有许多内界的序列.包括元组tuple,列表list,字符串str等.上面提到的序列类型(li ...
- Python中str()与repr()函数的区别
在 Python 中要将某一类型的变量或者常量转换为字符串对象通常有两种方法,即str()或者 repr() . >>> a = 10 >>> type(str(a ...
- Python中str()和repr()函数的区别
在 Python 中要将某一类型的变量或者常量转换为字符串对象通常有两种方法,即 str() 或者 repr() . 区别与使用函数str() 用于将值转化为适于人阅读的形式,而repr() 转化为供 ...
- python中xrange和range的异同
本文章系转载,原文来源不详. range 函数说明:range([start,] stop[, step]),根据start与stop指定的范围以及step设定的步长,生成一个序列.range示 ...
- python中xrange和range的区别
这两个基本上都是在循环的时候用. for i in range(0, 100): print i for i in xrange(0, 100): print i 这两个输出的结果都是一样的,实际上有 ...
- python中xrange与range的异同
转载自:http://ciniao.me/article.php?id=17 >>> range(5) [0, 1, 2, 3, 4] >>> range(1, 5 ...
- Python中input()和raw_input()函数的区别
问题:在Python2.7中使用 input() 函数会出现 “NameError: Name ”***“ is not defined 的错误 解决: 使用raw_input() 函数,在Pytho ...
随机推荐
- Linux--------------安装mysql(2)
在 CentOS7 上安装 MySQL5.7 1 通过 SecureCRT 连接到阿里云 CentOS7 服务器: 2 进入到目录 /usr/local/ 中:cd /usr/local/ 3 创建目 ...
- Android(java)学习笔记158:Java程序入口和Android的APK入口
1.Java程序的入口:static main()方法 public class welcome extends Activity { @Override public void onCreate(B ...
- 《app研发录》第一章 重构,夜未眠笔记
1.1 重新规划android的项目结构 重新规划android的目录结构分两步: 1.建立AndroidLib类库,将与业务无关的逻辑转移到AndroidLib. acitivity存放的是 ...
- 运用json-lib生成特定json
在实现接口过程中,一般协议都是定义数据格式为json.我们有时候需要把bean转换为JSON输出给接口调用者,但是可能存在bean中的字段有些不是接口定义所需要的.这个时候需要我们对JSON转换是需要 ...
- 隐藏/显示 我的电脑盘符驱动…
组策略里更改即可:点击"开始"→"运行",输入"gpedit.msc",打开组策略.在窗口左侧的"本地计算机策略"中依次 ...
- 编译inotify报错
错误如下: configure: error: no acceptable C compiler found in $PATH 这是因为没有找到编译器的原因造成的 解决方法: 安装gcc [root@ ...
- ionic 安装教程
2015-10-08:国庆回来发现有新版本了,特意更新结果命令失效了,然后重新装吧,结果也失败多次 大概6-7次左右,然后系统是win10,可以启用管理员命令窗口进行安装,第二次成功了! 1.准备 ...
- initMethod 和 afterPropertiesSet 以及 AwareMethod方法的执行时机
在spring开发中,我们定义bean 经常会需要用到beanFactory对象,这就需要实现BeanFactoryAware这种类型的接口,它有一个setBeanFactory方法 在xml中配 ...
- Angularjs总结(八)$ cookie和$rootscope
AngularJS 提供了很好的 $cookie 和 $cookieStore API 用来处理 cookies .这两个服务都能够很好的发挥HTML5 cookies,当HTML5 API可用时浏览 ...
- iOS9的那些坑 — — WeiboSDK registerApp启动就崩溃
在升级Xcode7.2.1后,在App加载时直接崩掉,仔细看了,发现是在在注册微博SDK的时候报错: [WeiboSDK registerApp:WBAPPKey]; 查了很多资料,最后在github ...