Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python3范围与Python2范围_Python_List_Range - Fatal编程技术网

Python3范围与Python2范围

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 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为什么要做这种改变?
这是好事还是坏事?

在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))
Python3
range()
函数等同于Python2
xrange()
函数而不是
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行为这也很有帮助!谢谢分享。