Python中range和xrange函数的区别
range([start,] stop[, step]),根据start与stop指定的范围以及step设定的步长,生成一个序列。
比如:
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 完全相同,所不同的是生成的不是一个list对象,而是一个生成器。
01
|
>>> xrange ( 5 )
|
02
|
xrange ( 5 )
|
03
|
>>> list ( xrange ( 5 ))
|
04
|
[ 0 , 1 , 2 , 3 , 4 ]
|
05
|
>>> xrange ( 1 , 5 )
|
06
|
xrange ( 1 , 5 )
|
07
|
>>> list ( xrange ( 1 , 5 ))
|
08
|
[ 1 , 2 , 3 , 4 ]
|
09
|
>>> xrange ( 0 , 6 , 2 )
|
10
|
xrange ( 0 , 6 , 2 )
|
11
|
>>> list ( xrange ( 0 , 6 , 2 ))
|
12
|
[ 0 , 2 , 4 ]
|
由上面的示例可以知道:要生成很大的数字序列的时候,用xrange会比range性能优很多,因为不需要一上来就开辟一块很大的内存空间。
xrange 和 range 这两个基本上都是在循环的时候用。
1
|
for i in range ( 0 , 100 ):
|
2
|
print i
|
3
|
4
|
for i in xrange ( 0 , 100 ):
|
5
|
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函数的区别相关推荐
- Python中 range 和xrange的详细区别
range 函数说明:range([start,] stop[, step]),根据start与stop指定的范围以及step设定的步长,生成一个序列. range示例: >>&g ...
- python中range和xrange的区别_ZH奶酪:Python中range和xrange的区别
直观说明:http://ciniao.me/article.php?id=17 原因分析:http://blog.csdn.net/liangliyin/article/details/5980505 ...
- Python中str()与repr()函数的区别——repr() 的输出追求明确性,除了对象内容,还需要展示出对象的数据类型信息,适合开发和调试阶段使用...
Python中str()与repr()函数的区别 from:https://www.jianshu.com/p/2a41315ca47e 在 Python 中要将某一类型的变量或者常量转换为字符串对象 ...
- 【Python】Python中str()和repr()函数的区别
作用 在 Python 中要将某一类型的变量或者常量转换为字符串对象通常有两种方法,即 str() 或者 repr() . 区别与使用 参考文章:Python 中 str() 和 repr() 函数的 ...
- python中range和xrange的区别_python中range和xrange的区别
range()是Python的内置函数,用于创建整数的列表,可以生成递增或者递减的数列.xrange也有相同的功能, 今天来看下它们之间的不同. range 函数说明:range([start,] s ...
- python中range()函数
python中range函数用法: [range()]函数可创建一个整数列表,一般用在for循环中,函数语法为[range(start, stop[, step])],其中start是开始计数,sto ...
- Python中range与xrange的区别
文档中对range与xrange的介绍如下: range([start], stop[,step]) This is a versatile function to create lists cont ...
- Python中range和xrange的区别
range 函数说明:range([start,] stop[, step]),根据start与stop指定的范围以及step设定的步长,生成一个序列. range示例: >>&g ...
- Python中range和xrange有何区别
range()是Python的内置函数,用于创建整数的列表,可以生成递增或者递减的数列.xrange也有相同的功能, 今天来看下它们之间的不同. range 函数说明:range([start,] s ...
最新文章
- jQuery的jquery-1.10.2.min.map触发404(未找到)
- php 入口文件引入取别名,php命名空间别名/导入
- #pragma once与#ifndef #define ...#endif的区别
- Java程序员必备的10个大数据框架
- initramfs下启动linux_和菜鸟一起学linux之initramfs方式启动
- 【STM32】FreeRTOS列表和列表项详解
- 程序员喝酒文化 (转贴)
- 在docker容器中安装ifconfig、ping等工具
- bzoj 3670: [Noi2014]动物园
- 编译x264出现错误:No working C compiler found.
- Docker仓库介绍和镜像加速器
- 上海提取公积金所需材料
- Linux管道命令及管道相关命令(详细)
- 关于C语言中的宏的一点点讨论
- 2022-2028全球与中国硅片清洗设备市场现状及未来发展趋势
- 国标GB28181(EasyGBS)/RTSP/HIKSDK/EHOME协议视频智能分析平台EasyCVR人脸识别智能分析功能拓展
- 学点编码知识又不会死:Unicode的流言终结者和编码大揭秘
- 自己的价值=有你的世界-没有你的世界
- 类和“对象” 以及 面向对象的三大特点
- Android wpa_supplicant源码分析---nl80211内核通信Generic Netlink
热门文章
- Java ——MongDB 插入数据、 模糊查询、in查询
- 煤柱群下重复开采覆岩与地表移动变形数值模拟研究_kaic
- Hammer.js 手势事件
- android 开源聊天控件,聊天IM的时间戳显示规则
- 天堂还是地狱!美国大学不是你想象的那样!道翰天琼认知智能API接口平台为您揭秘。
- linux中crontab表达式中日期和星期使用实测
- php二次开发知识,Discuz!二次开发基本知识
- 笔记本电脑录屏快捷键是什么?这个方法需要牢记
- 【模拟赛】卷王(构造)
- Handler post中run()方法与handleMessage()方法的调用原理