Python 3 范围与 Python 2 范围

新手上路,请多包涵

我最近开始学习python 3。

python 2 中, range() 函数可用于分配列表元素:

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

但是在 python 3range() 函数输出这个:

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

为什么会这样?

为什么 python 会做这个改变?

这是福音还是祸根?

原文由 Hari Narayana Batta 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 412
2 个回答

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

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

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

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

list_of_range = list(range(10))

原文由 Sam Hartman 发布,翻译遵循 CC BY-SA 3.0 许可协议

在 python 2 中, range 是一个内置函数。以下来自 官方 python 文档。它返回一个列表。

范围(停止)

范围(开始,停止[,步骤])

这是创建包含等差级数列表的多功能函数。它最常用于 for 循环。

您也可以检查 xrange 仅存在于 python 2 中。它返回 xrange 对象,主要用于快速迭代。

xrange (停止)

xrange (开始,停止[,步骤])

此函数与 range() 非常相似,但返回的是 xrange 对象而不是列表。

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

原文由 Leonard2 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题