網頁

2019/10/2

Python range() function 用法

Python range()函式用法如下。

Python的range()其實是Python內建的range型別的建構式(constructor),用來表示不可變(immutable)的數字序列,例如[1,2,3,4,5]


range型別的建構式為range(stop)range(start, stop[, step]),傳入的參數必須為整數。

range(start, stop[, step])start為序列的起始值(含);stop為結束值(不含);step為遞增值。

若省略start參數則預設序列數字從0開始;
若省略step則序列數字預設遞增值為1。

若用print()range是以建構式的樣子來表示;
若要印出range中所有的元素,可轉成list

r = range(5)
print(r) # range(5)
print(list(r)) # [0, 1, 2, 3, 4]

一些range範例。

r1 = range(10) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(r1) # range(10)

r2 = range(0, 10) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(r2) # range(10)

r3 = range(0, 10, 1) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(r3) # range(10)

r4 = range(0, 10, 2) # [0, 2, 4, 6, 8]
print(r4) # range(0, 10, 2)

r5 = range(5, 10, 2) # [5, 7, 9]
print(r5) # range(5, 10, 2)

range也可以是遞減的,把step值設為負數,例如:

r6 = range(0, -10, -1) # [0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
print(r6) # range(0, -10, -1)

rangestop為0或start的值遞增(減)前已超過stop的值,則range為空。

例如下面用len()函式取得的每個range長度皆為0。

r7 = range(0) # []
print(len(r7)) # 0

r8 = range(5, 0) # []
print(len(r8)) # 0

r9 = range(-5, 0, -1) # []
print(len(r9)) # 0

使用索引取出range變數中的值,索引值從0起算。如果索引值超出range的範圍,會發生IndexError: range object index out of range錯誤。

r10 = range(2, 5, 1) . # [2, 3, 4]

print(r10[0]) # 2
print(r10[1]) # 3
print(r10[2]) # 4
print(r10[3]) # IndexError: range object index out of range

若要比較兩個range變數是否相同,使用==!=比較。

r11 = range(5) # [0, 1, 2, 3, 4]
r12 = range(5) # [0, 1, 2, 3, 4]
r13 = range(10) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
r14 = range(1, 6, 1) # [1, 2, 3, 4, 5]

print(r11 == r12) # true
print(r11 == r13) # false
print(r11 == r14) # false

range通常與for迴圈一起使用。

for i in range(0, 5, 1):
    print(i)

印出如下:

0
1
2
3
4

沒有留言:

張貼留言