Python 3 范围与 Python 2 范围

标签 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 会做这个改变?
这是福音还是祸害?

最佳答案

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

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

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

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

list_of_range = list(range(10))

关于Python 3 范围与 Python 2 范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44571718/

相关文章:

python - 列表索引越界(街机游戏)

c++ - 如何制作一个 boost 多索引复合范围语句,相当于 where x AND y?

ruby-on-rails - 如何查找两个范围内的共同日期

python - 使用 python sdk Azure 身份验证失败

list - Haskell 列表 Monad 状态依赖

python - 非常具体的子串检索和分割

python - 如何从列表中获取二维列表但在另一个列表中定义形状

html - 将选择的数据返回到包含键值对的下拉表单元素

python - 在 Python 中使用 tz.localize 将 UTC 日期时间转换为英国日期时间

python - 将两个 numpy 掩码数组加在一起