我最近开始学习python 3。
在python 2中,range()
函数可用于分配列表元素:
>>> A = []
>>> A = range(0,6)
>>> print A
[0, 1, 2, 3, 4, 5]
但是在python 3中,range()
函数输出如下:
>>> A = []
>>> A = range(0,6)
>>> print(A)
range(0, 6)
为什么会发生这种情况?
为什么python要做这个改变呢?
是恩惠还是祸根?
发布于 2017-06-15 15:50:16
Python3在许多方面使用迭代器,python2使用lists.The 文档,给出了详细的解释,包括对range
的更改。
它的优点是,如果使用大范围迭代器或映射,Python3不需要分配内存。例如
for i in range(1000000000): print(i)
在python 3中需要的内存要少得多。
list_of_range = list(range(10))
发布于 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
的方式工作。检查医生们。
发布于 2017-06-15 15:51:43
Python3 range()
函数等效于python2 xrange()
函数,而不是range()
。
解释
在python 3中,为了节省内存,大多数函数返回Iterable对象,而不是像python 2中那样列出。其中一些是zip()
filter()
map()
,包括.keys .values .items()
字典方法,但是如果您尝试多次迭代,则迭代对象是无效的,因此仍然可以使用list()
方法将它们转换为列表。
https://stackoverflow.com/questions/44571718
复制相似问题