首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python 3 range Vs Python 2 range

Python 3 range Vs Python 2 range
EN

Stack Overflow用户
提问于 2017-06-15 15:42:05
回答 4查看 33.4K关注 0票数 31

我最近开始学习python 3。

python 2中,range()函数可用于分配列表元素:

代码语言:javascript
运行
复制
>>> A = []
>>> A = range(0,6)
>>> print A
[0, 1, 2, 3, 4, 5]

但是在python 3中,range()函数输出如下:

代码语言:javascript
运行
复制
>>> A = []
>>> A = range(0,6)
>>> print(A)
range(0, 6)

为什么会发生这种情况?

为什么python要做这个改变呢?

是恩惠还是祸根?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-06-15 15:50:16

Python3在许多方面使用迭代器,python2使用lists.The 文档,给出了详细的解释,包括对range的更改。

它的优点是,如果使用大范围迭代器或映射,Python3不需要分配内存。例如

代码语言:javascript
运行
复制
for i in range(1000000000): print(i)

在python 3中需要的内存要少得多。

代码语言:javascript
运行
复制
list_of_range = list(range(10))
票数 33
EN

Stack Overflow用户

发布于 2017-06-15 15:56:17

在python 2中,range是一个内置函数。下面是来自官方的python文档的。它会返回一个列表。

range(停止) range(开始、停止、步骤) 这是一个通用的函数,用于创建包含算术进度的列表。它最常用于for循环。

此外,您还可以检查xrange只存在于python2中。它返回xrange对象,主要用于快速迭代。

xrange(stop) xrange(start,停止,步骤) 此函数与range()非常相似,但返回xrange对象而不是列表。

顺便说一下,python3将这两者合并成一个range数据类型,在python2中以类似于xrange的方式工作。检查医生们

票数 4
EN

Stack Overflow用户

发布于 2017-06-15 15:51:43

Python3 range()函数等效于python2 xrange()函数,而不是range()

解释

在python 3中,为了节省内存,大多数函数返回Iterable对象,而不是像python 2中那样列出。其中一些是zip() filter() map(),包括.keys .values .items()字典方法,但是如果您尝试多次迭代,则迭代对象是无效的,因此仍然可以使用list()方法将它们转换为列表。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44571718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档