range() 函数
如果你需要遍历一个数字的序列,内建函数 range() 就可以随时使用。他可以生成一个等差数列:
>>> for i in range(5):
... print(i)
...
0
1
2
3
4
给定的终点永远不会成为生成序列的一部分。 range(10)
生成了 10 个数字,长度为 10 的序列的每一项元素的合法索引值。可以让 range (区间) 的开头是另一个数字,或者自己指定一个具体的增量 (甚至是负数,有时这个数被称作’步长’):
range(5, 10)
5 至 9
range(0, 10, 3)
0, 3, 6, 9
range(-10, -100, -30)
-10, -40, -70
遍历一个序列的索引值,你可以结合使用 range() 和 len(),如下所示:
>>> a = ['Mary', 'had', 'a', 'little', 'lamb']
>>> for i in range(len(a)):
... print(i, a[i])
...
0 Mary
1 had
2 a
3 little
4 lamb
然而在大多数情况下,用 enumerate() 函数会更加方便。参考循环技术
如果你打印一个 range,就会发生奇怪的事情:
>>> print(range(10))
range(0, 10)
在很多方式下,range() 函数的返回对象的行为就和列表一样,但是,事实上它并不是。它其实是一个对象,这个对象在你遍历它时,返回你希望得到的序列中的连续元素。但它并不真正是一个列表,所以它节省存储空间。
我们称这种对象为 可遍历对象,这种对象适合作为一些函数和结构的一种 目标对象,这些函数和结构期望从该 目标对象 中获取连续的元素,一直到获取完为止。list() 是另一种这样的函数,它可以从可遍历对象中生成列表:
>>> list(range(5))
[0, 1, 2, 3, 4]
在后面的章节里,我们将会看到更多接收可遍历对象作为参数,然后返回可遍历对象的函数。