Python3范围与Python2范围
我最近开始学习python 3。Python3范围与Python2范围,python,list,range,Python,List,Range,我最近开始学习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 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为什么要做这种改变?
这是好事还是坏事?在python3中,是吗
A = range(0,6)
A = list(A)
print(A)
您将得到相同的结果。Python3在许多情况下使用迭代器,其中Python2使用了列表。本文给出了详细的解释,包括对
范围的更改
其优点是,如果使用大范围迭代器或映射,则Python 3不需要分配内存。
比如说
for i in range(1000000000): print(i)
在Python3中需要更少的内存。
如果您确实希望Python一次将列表全部展开,那么您可以
list_of_range = list(range(10))
Python3range()
函数等同于Python2xrange()
函数而不是range()
解释
在Python3中,大多数函数返回Iterable对象,而不是Python2中的列表,以节省内存。其中一些是zip()
filter()
map()
包括.keys.values.items()
字典方法
但是,如果您尝试多次迭代,仍然可以使用list()
方法将它们转换为列表,那么iterable对象就没有效率。在python 2中,range
是一个内置函数。下面是来自。它返回一个列表
范围(停止)
范围(开始、停止[,步骤])
这是一个多功能函数,用于创建包含算术级数的列表。它最常用于for循环
此外,您还可以检查仅存在于Python2中。它返回xrange
对象,主要用于快速迭代
xrange(停止)
xrange(开始、停止[,步骤])
此函数与range()非常相似,但返回一个xrange对象而不是列表
顺便说一句,Python3将这两种类型合并为一种range
数据类型,其工作方式与Python2中的xrange
类似。检查。在Python-3.x中,range(…)
不再生成列表,它生成一个范围对象,允许迭代,但也可以快速len(…)
,检查中的,等等。请参阅及其答案。这个问题要求的远不止如何获得python2行为这也很有帮助!谢谢分享。