range 前面小节已经说明了,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
|
相关推荐
在Python编程语言中,`range()`和`xrange()`(在Python 3中已被移除)是两个用于生成整数序列的函数,但它们在内存管理和性能方面存在显著差异。理解这些差异对于编写高效和内存友好的代码至关重要。 首先,`range...
python中xrange和range的区别 python中range()与xrange()用法分析 本次小编给大家带来的是深入理解range和xrange之间的区别。 两种用法介绍如下: 1.range([start], stop[, step]) 返回等差数列。构建等差数列,...
range 函数说明:range([start...xrange 函数说明:用法与range完全相同,所不同的是生成的不是一个数组,而是一个生成器。xrange示例:复制代码 代码如下:>>> xrange(5)xrange(5)>>> list(xrange(5))[0, 1, 2, 3, 4]>>>
本文实例讲述了python中range()与xrange()用法。分享给大家供大家参考,具体如下: 据说range比xrange开销要大,原因是range会直接生成一个list对象,而xrange每次调用返回其中的一个值(参考://...
在 Python 2 中 xrange() 创建迭代对象的用法是非常流行的。比如: for 循环或者是列表/集合/字典...在 Python 3 中,range() 是像 xrange() 那样实现以至于一个专门的 xrange() 函数都不再存在(在 Python 3 中 xrange
在Python 3.x中,`range`的行为类似于Python 2.x中的`xrange`,返回的是一个迭代器。 - **示例**: - Python 2.x: ```python for i in xrange(10): print(i) ``` - Python 3.x: ```python for i in range(10...
总结来说,xrange和range都用于生成整数序列,但是在Python 2中xrange在处理大数据时更为高效。Python 3中的range已经整合了xrange的特性,使得在所有情况下都可以高效地使用range来生成序列。无论是在Python 2还是...
在Python中,`range` 和 `xrange` 都是用来生成整数序列的内置函数,但它们之间存在一些重要的区别。 ##### range - **功能**:`range()` 函数返回一个包含指定范围内的整数的列表。它接受三个参数:起始值、终止值...
Python 2.7.x 和 3.x 是 Python 编程语言的两个主要版本,它们之间存在一些关键的区别,这些差异可能会对开发者的编程习惯和项目的兼容性产生影响。以下是这两个版本之间的一些主要区别: 1. **`__future__` 模块**...
由于`range()`在Python 3.x版本中进行了优化,对于需要兼容Python 2.x的代码,可以使用`xrange()`函数,它在Python 2.x中与`range()`类似,但在Python 3.x中已不再可用。 总之,`range()`函数是Python中进行数值...
3. **迭代器和生成器**:Python 2的`xrange`在Python 3中被`range`取代,`six`提供了`six.moves.xrange`来确保跨版本兼容性。 4. **函数和方法**:Python 2的`apply()`, `execfile()`, 和`reduce()`在Python 3中已...
在Python 2.x中xrange()创建迭代对象的用法是非常流行的,比如:for循环或者是...在Python 3.x中,range()的实现方式与xrange()函数相同,所以就不存在专用的xrange()(在Python 3.x中使用xrange()会触发NameError)。
xrange和range在Python2和Python3中的差异也值得了解。在Python2中,xrange生成器用于高效地生成大整数序列,不会一次性生成整个列表,节省内存。而在Python3中,xrange被range函数替代,range函数的行为类似于...
5. range和xrange的区分取消:Python 3中,range函数的行为与Python 2中的xrange类似,可以生成一个可迭代的range对象,从而提高了内存效率。 6. 迭代器的改进:Python 3通过引入新的内置类型来改善迭代器的行为,...