我最近开始学习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会做这个改变? 这是恩惠还是祸根?
答案 0 :(得分:18)
Python 3 使用 iterators 来处理很多 python 2 list 的事情。{{3提供详细解释,包括对range
的更改。
优点是,如果您使用大范围迭代器或映射, Python 3 不需要分配内存。 例如
for i in range(1000000000): print(i)
在python 3中需要更少的内存。 如果您确实希望Python能够立即扩展列表,那么
list_of_range = list(range(10))
答案 1 :(得分:3)
在python 2中,range
是一个内置函数。以下是the official python docs。它返回一个列表。
<强>范围强>(停止)
范围(开始,停止[,步骤])
这是一个用于创建包含算术进度的列表的通用函数。它最常用于for循环。
你也可以检查xrange
仅存在于python 2中。它返回xrange
个对象,主要用于快速迭代。
<强> x范围强>(停止)
xrange (开始,停止[,步骤])
此函数与range()非常相似,但返回xrange对象而不是列表。
顺便说一句,python 3将这两个数据合并为一个range
数据类型,在python 2中以xrange
的类似方式工作。检查the docs。
答案 2 :(得分:1)
Python 3 , Scheduler.async));
函数等效于python 2 range()
函数而不是xrange()
解释
在python 3中,为了节省内存,大多数函数都返回Iterable对象而不是python 2中的列表。其中一些是range()
zip()
filter()
,包括。map()
字典方法
但是,如果您尝试迭代几次,那么可迭代对象效率不高,因此您仍然可以使用keys .values .items()
方法将它们转换为列表
答案 3 :(得分:-1)
在python3中,执行
A = range(0,6)
A = list(A)
print(A)
您将获得相同的结果。