python range 函数简介
python range() 函数可创建一个整数列表,一般用在 for 循环中。其函数语法如下所示:
range(start, stop[, step])
参数说明:
- start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0,5)
- stop: 计数到 stop 结束,但不包括 stop。例如:range(0,5) 是[0, 1, 2, 3, 4],没有5
- step:步长,默认为1。例如:range(0,5) 等价于 range(0,5,1)
Python3里面的range函数返回的不是列表,是可迭代对象。在Python3中,如果执行下面的语句
print(range(5))
得到结果是 range(0,5) ,而不是期望的[0,1,2,3,4]。但是,如果换一种方式:
print(list(range(5)))
得到的结果却是:[0, 1, 2, 3, 4]
那为什么会这样呢?其实在Python3中range()函数返回的对象很像一个列表,但是它确实不是一个列表,它只是在迭代的情况下返回指定索引的值,它并不会在内存中产生一个列表对象,官方解释说这样做是为了节约内存空间。通常我们称这种对象是可迭代的,或者是可迭代对象。
这里就要引入另外一个叫迭代器的概念,迭代器可以从一个可迭代对象中连续获取指定索引的值,直到索引结束。比如list()函数,所以在上面的例子中,我们可以用list()这个迭代器将range()函数返回的对象变成一个列表。
由此可以看出:range()函数返回的是一个可迭代对象(类型是对象),而不是列表类型;list() 函数是对象迭代器,把对象转为一个列表,返回的变量类型为列表。