深入理解Python中range和xrange的区别

 更新时间:2017年11月26日 15:46:14   投稿:laozhang  
这篇文章主要介绍了深入理解Python中range和xrange的区别,从用法和输出等方便详细介绍了之间的差别。

脚本之家已经给大家介绍过range和xrange的区别的基础知识,有兴趣的朋友可以参阅:

 python中xrange和range的区别

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

本次小编给大家带来的是深入理解range和xrange之间的区别。

两种用法介绍如下:

1.range([start], stop[, step])

返回等差数列。构建等差数列,起点是start,终点是stop,但不包含stop,公差是step。

start和step是可选项,没给出start时,从0开始;没给出step时,默认公差为1。

例如:

>>> range(10)               #起点是0,终点是10,但是不包括10
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(1,10)              #起点是1,终点是10,但是不包括10
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(1,10,2)             #起点是1,终点是10,步长为2
[1, 3, 5, 7, 9]
>>> range(0,-10,-1)            #起点是1,终点是10,步长为-1 
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
>>> range(0,-10,1)            #起点是0,终点是-10,终点为负数时,步长只能为负数,否则返回空
[]
>>> range(0)               #起点是0,返回空列表
[]
>>> range(1,0)              #起点大于终点,返回空列表
[]

2.xrange([start], stop[, step])
xrange与range类似,只是返回的是一个"xrange object"对象,而非数组list。
要生成很大的数字序列的时候,用xrange会比range性能优很多,因为不需要一上来就开辟一块很大的内存空间。
例如:

>>> lst = xrange(1,10)
>>> lst
xrange(1, 10)
>>> type(lst)
<type 'xrange'>
>>> list(lst)
[1, 2, 3, 4, 5, 6, 7, 8, 9]

区别如下:

1.range和xrange都是在循环中使用,输出结果一样。

2.range返回的是一个list对象,而xrange返回的是一个生成器对象(xrange object)。

3.xrange则不会直接生成一个list,而是每次调用返回其中的一个值,内存空间使用极少,因而性能非常好。

补充点:

#以下三种形式的range,输出结果相同。
>>> lst = range(10)
>>> lst2 = list(range(10))
>>> lst3 = [x for x in range(10)]
>>> lst
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> lst2
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> lst3
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> lst == lst2 and lst2 == lst3
True

注意:Python 3.x已经去掉xrange,全部用range代替。

相关文章

  • 10分钟教你用Python实现微信自动回复功能

    10分钟教你用Python实现微信自动回复功能

    今天,我们就来用Python实现微信的自动回复功能吧,并且把接收到的消息统一发送到文件助手里面,方便统一查看。感兴趣的朋友跟随小编一起看看吧
    2018-11-11
  • Python探索之实现一个简单的HTTP服务器

    Python探索之实现一个简单的HTTP服务器

    这篇文章主要介绍了Python探索之实现一个简单的HTTP服务器,具有一定参考价值,需要的朋友可以了解下。
    2017-10-10
  • Python multiprocessing.value实现多进程数据共享的示例

    Python multiprocessing.value实现多进程数据共享的示例

    本文介绍了Python中的multiprocessing.value,通过示例代码展示了如何使用这个类实现多进程数据共享,以及使用场景和注意事项等内容,感兴趣的朋友跟随小编一起看看吧
    2023-07-07
  • python机器学习实战之K均值聚类

    python机器学习实战之K均值聚类

    这篇文章主要为大家详细介绍了python机器学习实战之K均值聚类,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • Python设计模式中的行为型策略模式

    Python设计模式中的行为型策略模式

    这篇文章主要介绍了Python设计模式中的行为型策略模式,策略模式即Strategy Pattern,其定义了算法家族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化,不会影响到使用算法的客户,下文相关资料具有一点的参考价值,需要的小伙伴可以参考一下
    2022-02-02
  • 如何使用pandas读取txt文件中指定的列(有无标题)

    如何使用pandas读取txt文件中指定的列(有无标题)

    这篇文章主要介绍了如何使用pandas读取txt文件中指定的列(有无标题),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • Python入门教程(四十三)Python的NumPy数据类型

    Python入门教程(四十三)Python的NumPy数据类型

    这篇文章主要介绍了Python入门教程(四十二)Python的NumPy数组裁切,NumPy有一些额外的数据类型,并通过一个字符引用数据类型,例如 i 代表整数,u 代表无符号整数等,需要的朋友可以参考下
    2023-05-05
  • Python中使用filter过滤列表的一个小技巧分享

    Python中使用filter过滤列表的一个小技巧分享

    这篇文章主要介绍了Python中使用filter过滤列表的一个小技巧分享,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • Python实现PDF到Word文档的高效转换

    Python实现PDF到Word文档的高效转换

    这篇文章主要为大家详细介绍了如何使用Python编程语言,结合库和工具,将PDF文件转换为可编辑的Word文档,使文档的编辑变得方便高效,需要的可以参考下
    2024-01-01
  • Python 使用office365邮箱的示例

    Python 使用office365邮箱的示例

    这篇文章主要介绍了Python 使用office365邮箱的示例,帮助大家利用python进行高效办公,感兴趣的朋友可以了解下
    2020-10-10

最新评论