range(start, stop[, step]) 可生成滿足條件的數。具體來說是返回一個從start開始到小於stop的相鄰數的差step的等差數列列表。結果中包含start一直到小於stop的整數,其中start和step有默認值0和1,這兩個參數可以省略。
Python的range對象可能是最常用的一個函數了,有了它,可以瞬間幫助工程師生成大量的數據,有了它我們就有了隨時隨地取用大量滿足條件數據的需求。就可以為我們創設各種各樣的數據場景。
Python文檔中的定義是:
range 類型表示不可變的數字序列,通常用於在 for 循環中循環指定的次數。
使用方法:
§ class range(stop)
§ class range(start, stop[, step])
range 構造器的參數必須為整數(可以是內置的 int 或任何實現了 __index__ 特殊方法的對象)。如果省略 step 參數,其默認值為 1。如果省略 start 參數,其默認值為 0,如果 step 為零則會引發 ValueError。
生成內容為:
§ 如果 step 為正值,確定 range r 內容的公式為 r[i] = start + step*i 其中 i >= 0 且 r[i] < stop。
§ 如果 step 為負值,確定 range 內容的公式仍然為 r[i] = start + step*i,但限制條件改為 i >= 0 且 r[i] > stop.
§ 如果 r[0] 不符合值的限制條件,則該 range 對象為空。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] >>> list(range(0, 10, 3)) [0, 3, 6, 9] >>> list(range(0, -10, -1)) [0, -1, -2, -3, -4, -5, -6, -7, -8, -9] >>> list(range(0)) [] >>> list(range(1, 0)) [] >>> r = range(0, 20, 2) >>> r range(0, 20, 2) >>> 11 in r False >>> 10 in r True >>> r.index(10) 5 >>> r[5] 10 >>> r[:5] range(0, 10, 2) >>> r[-1] 18
實戰:如何利用range()獲取一個數的所有約數
參考代碼1:
1 #一般用法 2 num = 65536 3 l = list() 4 for n in range(1,num+1): 5 if num % n==0: 6 l.append(n) 7 print(l)
參考代碼2:
1 #列表推導式用法 2 print([n for n in range(1,num+1) if num%n==0])