Python 3范围 vs Python 2范围

2024-04-19 14:07:39 发布

您现在位置:Python中文网/ 问答频道 /正文

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

>>> A = []
>>> A = range(0,6)
>>> print A
[0, 1, 2, 3, 4, 5]

如在使用range()函数时,python 3中的

>>> A = []
>>> A = range(0,6)
>>> print(A)
range(0, 6)

为什么会这样?
为什么python要做这种改变?
是福还是祸?


Tags: 函数元素列表rangeprint
3条回答

Python3在很多情况下使用迭代器,其中Python2使用列表docs给出了详细的解释,包括对range的更改。

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

for i in range(1000000000): print(i)

在python 3中需要更少的内存。 如果您碰巧希望Python一次展开列表,则可以

list_of_range = list(range(10))

在Python3中,做

A = range(0,6)
A = list(A)
print(A)

你会得到同样的结果。

在python 2中,range是一个内置函数。下面是来自the official python docs。它返回一个列表。

range(stop)
range(start, stop[, step])
This is a versatile function to create lists containing arithmetic progressions. It is most often used in for loops.

您还可以检查^{}只存在于python 2中。它返回xrange对象,主要用于快速迭代。

xrange(stop)
xrange(start, stop[, step])
This function is very similar to range(), but returns an xrange object instead of a list.

顺便说一下,python 3将这两者合并为一个range数据类型,工作方式与python 2中的xrange类似。检查the docs

相关问题 更多 >