Range 是 Python 產生整數數列的物件 (object) ,相較串列 (list) 可以節省記憶體使用,因此常用在 for 迴圈。
Range 的建構子 (constructor) 有兩種參數 (parameter) 版本,第一種是只要一個參數 stop ,這會產生從 0 開始,然後 1 然後 2 ,到 stop 結束的整數數列,第二種可用三個參數,從 start 到 stop 但不包含 stop ,或是從 start 到 stop ,每個數字間隔 step
stop = 10
print(range(stop))
start = 2
print(range(start, stop))
step = 2
print(range(start, stop, step))
#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:range01.py
# 功能:示範建立 range 物件
# 作者:張凱慶
留意這裡 range() 都是小寫,因此 range() 也被歸類到內建函數 (built-in function) 。
於命令列執行以上程式,結果如下
$ python3 range01.py |
range(0, 10) |
range(2, 10) |
range(2, 10, 2) |
$ |
來看看實際的例子,如果只用 range() 加上參數 10 ,結果回傳 range(0, 10) 到物件,如果用內建函數 list() 轉換成串列,我們就能看到 range(0, 10) ,內含從 0 到 9 的十個整數 (integer)
a = range(10)
b = list(a)
print(b)
#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:range02.py
# 功能:示範 range 物件的內含數列
# 作者:張凱慶
於命令列執行以上程式,結果如下
$ python3 range02.py |
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] |
$ |
繼續看到用兩個參數,這裡參數用 1 及 11 ,因此內含從 1 到 10 的十個整數。
a = range(1, 11)
b = list(a)
print(b)
#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:range03.py
# 功能:示範 range 物件的內含數列
# 作者:張凱慶
於命令列執行以上程式,結果如下
$ python3 range03.py |
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] |
$ |
加上 step ,這裡取得 0 到 20 的所有偶數。
a = range(0, 20, 2)
b = list(a)
print(b)
#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:range04.py
# 功能:示範 range 物件的內含數列
# 作者:張凱慶
於命令列執行以上程式,結果如下
$ python3 range04.py |
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18] |
$ |
step 也可以是負數,這就改成從大到小,這裡取得 0 到 20 的所有奇數。
a = range(19, 0, -2)
b = list(a)
print(b)
#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:range05.py
# 功能:示範 range 物件的內含數列
# 作者:張凱慶
於命令列執行以上程式,結果如下
$ python3 range05.py |
[19, 17, 15, 13, 11, 9, 7, 5, 3, 1] |
$ |
最後來看到 range() 在 for 迴圈的應用, i 會取得 0 到 20 中的所有奇數,最後計算出總和。
sum = 0
for i in list(range(19, 0, -2)):
sum += i
print(sum)
#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:range06.py
# 功能:示範 range 物件的內含數列
# 作者:張凱慶
於命令列執行以上程式,結果如下
$ python3 range06.py |
100 |
$ |
相關教學影片