range
在前一小節的例子當中,我們使用了兩次 range
函式來產生資料型態為 range
的變數,是一種類似 list
的可迭代物件。
>>> a = range(1, 51)
>>> type(a)
<class 'range'>
接著我們試著觀察兩個range例子的共通點,range(2, n)
代表的是2~n-1的整數序列,range(1, 51)
則是1~50的整數序列,因此可以猜測,range
的第一個參數就是序列的起始值,第二個參數則是序列的結束值,但是本身不包含在內。
快接近了!不過其實 range
可以更為複雜,詳細的語法如下:
range(start, stop, step)
range(start, stop)
range(stop)
- start: 代表序列的起始值
- stop: 代表序列的結束值(不包含)
- step: 代表序列的公差
比較特別的是,若公差為1時,step可以省略不寫(如第二行的寫法);又起始值為0時,start也可以省略不寫(如第三行的寫法)。
其中要特別注意,不可以沒有省略step參數卻想要省略start參數,也就是當range只吃了兩個參數時,就會默認第一個參數是start,第二個參數是stop。
以下提供更多例子讓大家明白
range
的用法:
print(list(range(1, 21, 2))) # 代表1~20(因為不包含21)內的奇數
print(list(range(20, 0, -2))) # 公差可以是負的!代表20~1(因為不包含0)內的偶數
print(list(range(1, 21))) # 代表1~20(因為不包含21)的所有整數(省略公差即為1)
print(list(range(20))) # 代表0~19(因為不包含20)的所有整數(省略公差即為1,省略起始值即為0),常用來表示list的index,因為index從0開始。