range函數
range() 是 Python 中一個非常實用的內建函數,通常用來生成一個整數序列,這個序列可以用於迴圈中遍歷數據。range() 在 Python 2.x 和 Python 3.x 中有些不同,下面將分別介紹。
Python 2.x 中的 range()
在 Python 2.x 中,range() 函數返回的是一個列表,該列表包含了一個從 start 到 stop(不包括 stop)的等差數列,步長由 step 決定。默認情況下,start 為 0,step 為 1。
語法:
range(start, stop[, step])
參數說明:
start:序列的起始值,默認為 0。stop:序列的終止值(不包含此值)。step:序列中的步長,默認為 1。
範例:
print(range(10)) # 從 0 開始到 9,輸出: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] print(range(1, 11)) # 從 1 開始到 10,輸出: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] print(range(0, 30, 5)) # 步長為 5,輸出: [0, 5, 10, 15, 20, 25] print(range(0, 10, 3)) # 步長為 3,輸出: [0, 3, 6, 9] print(range(0, -10, -1))# 負數步長,輸出: [0, -1, -2, -3, -4, -5, -6, -7, -8, -9] print(range(0)) # 空範圍,輸出: [] print(range(1, 0)) # 起點大於終點,輸出: []
Python 3.x 中的 range()
在 Python 3.x 中,range() 函數的行為有了一些改變。它不再返回一個列表,而是返回一個可迭代對象。這意味著當你調用 range() 時,它不會立即生成整個序列,而是在需要時才會生成每個值,這使得 range() 更加高效,特別是在處理大範圍的數據時。
語法:
range(start, stop[, step])
範例:
print(list(range(10))) # 在 Python 3.x 中,需要將 range() 轉換為列表才能看到結果 print(list(range(1, 11))) print(list(range(0, 30, 5))) print(list(range(0, 10, 3))) print(list(range(0, -10, -1))) print(list(range(0))) print(list(range(1, 0)))
注意:在 Python 3.x 中,range() 返回的並不是列表,所以如果你直接打印 range() 的結果,會看到的是一個 range 對象,而不是列表。要看到具體的值,可以用 list() 將 range 轉換為列表。
range() 在 for 迴圈中的使用
range() 函數通常用於 for 迴圈中,用來遍歷一個特定範圍的數字。例如:
x = 'runoob'
for i in range(len(x)):
print(x[i])
這段代碼會依次打印出 runoob 的每個字符:
r u n o o b
這裡的 range(len(x)) 生成了一個從 0 到 len(x)-1 的序列,並用於遍歷字符串 x。
range() 的三種用法
range() 有三種主要用法,總結如下:
range(stop):- 生成一個從 0 到
stop-1的序列。 - 範例:
range(5)生成[0, 1, 2, 3, 4]。
- 生成一個從 0 到
range(start, stop):- 生成一個從
start到stop-1的序列。 - 範例:
range(1, 5)生成[1, 2, 3, 4]。
- 生成一個從
range(start, stop, step):- 生成一個從
start到stop-1,步長為step的序列。 - 範例:
range(0, 10, 2)生成[0, 2, 4, 6, 8]。
- 生成一個從
