Python - 詳解 range()


介紹

  1. range 是一個類,不是函數
  2. 表示不可變的數字序列,通常用於在 for 循環中循環指定的次數

 

兩種語法格式

range(stop)
  • 表示區間 [0, stop) 內的整數序列
  • 該區間從 0 開始、到 stop 結束,不包含 stop

 

range(start, stop[, step]) 
  • 表示區間 [start, stop) 內的整數序列
  • 該區間從 start 開始、到 end 結束,不包含 end
  • step 是步進,默認是 1

 

step 的取值規則

  • 如果 step 為正值,確定 range 某個值的公式為 r[i] start step*i 其中 >= 0 且 r[i] < stop
  • 如果 step 為負值,確定 range 某個值的公式仍然為 r[i] start step*i,但限制條件改為 >= 0 且 r[i] > stop

 

返回值

都是 range 實例對象

 

一些簡單的栗子

>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> list(range(1, 11))
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

>>> list(range(0, 30, 5))
[0, 5, 10, 15, 20, 25]

>>> tuple(range(0, 10, 3))
(0, 3, 6, 9)>>> set(range(0, -10, -1))
{0, -1, -2, -3, -4, -5, -6, -7, -8, -9}

>>> list(range(0))
[]

>>> list(range(1, 0))
[]

 

range 的優勢

相比常規的 list、tuple,range 的優勢在於range 對象總是占用固定數量的較小內存,無論其所表示的范圍有多大

 

range 的特性

range 對象實現了 collections.abc.Sequence ,提供了包括 index、索引、切片等特性

r = range(0, 20, 2)
print(r)
print(list(r))

# in
print(10 in r)
print(11 not in r)

# index
print(r.index(6))

# 切片
print(r[2])
print(r[-1])


# 輸出結果
range(0, 20, 2)
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
True
True
3
4
18

但是切片僅支持索引取值 [ ],不支持 [ : ] 來取值

 

==、!= 操作

使用 == 和 != 檢測 range 對象是否相等是將其作為序列來比較

r1 = range(0, 4, 2)
r2 = range(0, 3, 2)
print(r1 == r2)


# 輸出結果
True

 

循環遍歷 range

for item in range(3):
    print(item)


# 輸出結果
0
1
2

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM