Python 3系列Vs Python 2系列

Har*_*tta 12 python list range

我最近开始学习python 3.
python 2中, range()函数可用于分配列表元素.

>>> A = []
>>> A = range(0,6)
>>> print A
[0, 1, 2, 3, 4, 5]
Run Code Online (Sandbox Code Playgroud)

python 3中,当使用range()函数时,这种情况正在发生

>>> A = []
>>> A = range(0,6)
>>> print(A)
range(0, 6)
Run Code Online (Sandbox Code Playgroud)

为什么会这样?
为什么python会做这个改变?
这是恩惠还是祸根?

Sam*_*man 20

Python 3使用迭代器来处理python 2使用列表的很多东西.文档给出了详细的解释,包括对它的更改range.

优点是,如果您使用大范围迭代器或映射,Python 3不需要分配内存.例如

for i in range(1000000000): print(i)
Run Code Online (Sandbox Code Playgroud)

在python 3中需要更少的内存.如果你确实希望Python能够立即扩展列表

list_of_range = list(range(10))
Run Code Online (Sandbox Code Playgroud)