Python 速查手冊

2.6 Ranges

本書已有新版,請參考 Python 簡易手冊 - 目錄

Range 是 Python 產生整數數列的物件 (object) ,相較串列 (list) 可以節省記憶體使用,因此常用在 for 迴圈。

Range 的建構子 (constructor) 有兩種參數 (parameter) 版本,第一種是只要一個參數 stop ,這會產生從 0 開始,然後 1 然後 2 ,到 stop 結束的整數數列,第二種可用三個參數,從 startstop 但不包含 stop ,或是從 startstop ,每個數字間隔 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) ,內含從 09 的十個整數 (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]
$

繼續看到用兩個參數,這裡參數用 111 ,因此內含從 110 的十個整數。

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 ,這裡取得 020 的所有偶數。

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 也可以是負數,這就改成從大到小,這裡取得 020 的所有奇數。

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 會取得 020 中的所有奇數,最後計算出總和。

sum = 0
for i in list(range(19, 0, -2)):
    sum += i
print(sum)

#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:range06.py
# 功能:示範 range 物件的內含數列
# 作者:張凱慶

於命令列執行以上程式,結果如下

$ python3 range06.py
100
$

相關教學影片

上一頁: 2.5 串列及序對
Python 速查手冊 - 目錄
下一頁: 2.7 字典
回 Python 教材首頁
回程式語言教材首頁