Python 2.7和3.4中的打印范围不同

4
在Python 2.7中,如果运行以下代码行:
print(range(0, 20))

它返回:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
但在3.4版本中,它返回:
range(0, 20)
我知道这两个版本之间存在差异,但我不知道在这种情况下它们有什么不同。能有人回答这两个问题吗?
1. 是什么导致它们不同? 2. 如何使3.4返回列表,如果我想让2.7返回语句,该怎么做?

list(range(0, 20))? - shahkalpesh
2个回答

3

Python 2和3有些不同。

在版本3中,range不能做你要求的事情。举个例子,在Python3中,不再使用xrange

回到你的问题,以下是在Python3中的操作:

ab = list(range(20))

再次提醒,Google是你的好朋友... ;)

并且找出python2python3之间的主要区别,请点击这里

附注:这里有位绅士建议我使用Python3而不是Python2,因为Py2将在2020年停止支持。想想看,时间长了但其实也不算太久。


感谢@jackjameshoward。祝你学习顺利。 - Andy K

2

现在的 range 是一个迭代器,当你依次遍历它时,它会返回其值。

如果您想获取整个列表,必须调用 list:

list(range(0, 20))

但在大多数情况下,最好使用范围作为未经过list(range(...))处理的形式,因为它可以节省内存。反过来,在第二个版本中,范围立即创建整个列表,同时在第二个Python中有一个特殊的xrange,它返回像第三个Python中一样的迭代器。

更多详情,请点击这里


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接