python3 range() 函数和 xrange() 函数

python3 range 函数

python3 取消了 xrange() 函数,并且和 range() 函数合并为 range()。

python2.7 环境
函数说明:range([start,] stop[, step]),根据start与stop指定的范围以及step设定的步长,生成一个list。xrange([start,] stop[, step])则生成一个生成器

>>> range(8)
[0, 1, 2, 3, 4, 5, 6, 7]
>>> a = range(8)
>>> print(type(a))
<type 'list'>
>>> b = xrange(8)
>>> type(b)
<type 'xrange'>
>>> [ x for x in b]
[0, 1, 2, 3, 4, 5, 6, 7]

但是无论需要的序列多大,每次遍历时xrange消耗相同量的内存。在遍历极端的大序列时,这是相对于range的很大优势。另一个优势也是明显的:当你的代码在遍历已经产生的序列时调用break的话,xrange显然比range要好,因为xrange会消耗更少的内存

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

>>> a = range(8)
>>> type(a)
<class 'range'>
>>> [ x for x in a]
[0, 1, 2, 3, 4, 5, 6, 7]

>>> b = xrange(8)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'xrange' is not defined

当调用 xrange() 的时候,python3 环境提示 xrange 没有被定义。而 range() 函数的类型也发生了变化,在 2.7 里面的时候,是 list 类型,但是在 3.7 里面,range() 函数是range 类型。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • range 函数说明:range([start,]stop[,step]),根据start与stop指定的范围以及...
    西多的大叔阅读 268评论 0 0
  • 1. abs(x) abs()函数返回数字(可为普通型、长整型或浮点型)的绝对值。如果给出复数,返回值就是该复数的...
    TENG书阅读 424评论 0 0
  • 1. abs(x) abs()函数返回数字(可为普通型、长整型或浮点型)的绝对值。如果给出复数,返回值就是该复数的...
    chen_000阅读 413评论 0 0
  • 用于python面试整理,主要来源于http://www.cnblogs.com/skiler/p/6952707...
    十里江城阅读 2,381评论 0 13
  • 青山阴蔚,翠红恋春风,蝴蝶迷蕊。 河谷绕犁湾,卷沧浪、波峰继继。 夷江如带,嵌碧岸、万重烟水。 摇曳,雾滃浮、远接...
    刘小地阅读 342评论 26 71