在python中,如果你確實需要遍歷一個數字序列,內建函式range()會派上用場。它生成算術級數:
for i in range(10):
print(i)
輸出如下:
注意:給定的終止數值並不在要生成的序列裡,range(10)會生成10個值,並且是以合法的索引生成一個長度為10的序列。range也可以以另一個數字開頭,或者以指定的幅度增加(甚至是負數,有時這也叫做’步進‘)。
range()和len()組合
要以序列的索引來迭代,您可以將range()和len()組合,
我們來舉一個小例子:
list = [‘apple’ ,‘pear’,‘banana’,‘orange’]
for i in range(len(list)):
print(i,list[i])
輸出如下
0 apple
1 pear
2 banana
3 orange
然而在大多這類情況下,使用enumerate()函式比較方便
enumerate()函式
enumerate(iterable,start=0) 返回一個列舉物件,iterable必須是一個序列,或iterator,或其它支援迭代的物件。enumerate()返回的迭代器的__next__()方法返回一個元組,裡邊包含一個計數值(從start開始,預設為0)和透過迭代iterable獲得的值。我們舉個例子:
seasons = [‘spring’,‘summer’,‘fall’,‘winter’]
for i in enumerate(seasons):
print(i)
輸出如下:
(0, ‘spring’)
(1, ‘summer’)
(2, ‘fall’)
(3, ‘winter’)
range()返回資料
range()所返回的物件在許多方面表現的像一個列表,但實際上卻並不是。此物件會在你迭代它時基於所希望的序列返回連續的項,但它沒有真正的生成列表,這樣就能節省空間。我們稱這樣物件為iterable,也就是說,適合作為這樣的目標物件,函式和結構期望中從獲取連續的項直到所提供的項全部耗盡。我們已經看到for語句就是這樣一種結構,而接受可迭代物件的函式的一個例子是sum()函式。
sum(range(7))
輸出如下
21
range()生成列表
利用range()函式生成數字列表,舉例如下:
list1 = list(range(10))
print(list1)
輸出如下:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]