python中range()函数的返回值是多少?

时间:2017-05-04 07:07:51

标签: python python-3.x range python-3.5

我认为range()函数返回一个列表,其中包含放在括号内的参数。但是当我在IDLE中输入range(4)时,我得到range(0, 4)作为输出。同样,当我输入print(range(4))时,我也会得到range(0, 4)作为输出。我目前正在使用python 3.5。

我目前正在使用以下电子书学习python:“如何像计算机科学家一样思考”,在该电子书中,它们提供了可以运行python代码的活动代码块。当我在那里运行print(range(4))时,我会得到我期望的列表,即[0, 1, 2, 3]

有人可以向我解释一下吗?

提前致谢!

4 个答案:

答案 0 :(得分:9)

您正在阅读的书可能使用Python 2,其中range返回一个列表。

在Python 3中,range会返回immutable sequence type

答案 1 :(得分:4)

你的书可能是用Python 2.x编写的。在Python 2.x中,range函数实际上返回了for循环将遍历的列表。在Python 3.x中,范围函数是它自己的类型,并且实际上是一个生成器函数,因此当for循环执行时,数字会立即生成。

如果将范围函数传递给类似的列表,您仍然可以从范围函数创建列表。

list(range(4))

哪个会输出包含以下内容的列表。

[0,1,2,3]

答案 2 :(得分:2)

range(a, b)返回类range的实例。您可以print(type(range(1, 5)))进行检查。

您期望的是print(list(range(a, b)))

答案 3 :(得分:1)

print(range(10))返回范围(0,10)作为输出

在很多方面,range()返回的对象的行为就好像它是一个列表,但事实上并非如此。它是一个对象,当你迭代它时会返回所需序列的连续项,但它并没有真正产生列表,从而节省了空间。

我们说这样的对象是可迭代的,也就是说,适合作为函数和构造的目标,这些函数和构造期望在供应耗尽之前可以获得连续项目的东西。我们已经看到for语句就是这样一个迭代器。函数列表()是另一个;它从迭代创建列表:

list(range(5))返回[0,1,2,3,4]作为输出