Python range() 函數


range()是python的內置函數,用的地方挺多的,目前我經常會在for循環中作為循環的次數來使用,其實range()的用法不僅僅如此,本文給大家介紹下。

如果你確實需要遍歷一個數字序列,內置函數 range() 會派上用場。它生成算術級數:

>>> for i in range(5):
...     print(i)
...
0
1
2
3
4

給定的終止數值並不在要生成的序列里;range(10) 會生成10個值,並且是以合法的索引生成一個長度為10的序列。range也可以以另一個數字開頭,或者以指定的幅度增加(甚至是負數;有時這也被叫做 '步進')

range(5, 10)
   5, 6, 7, 8, 9

range(0, 10, 3)
   0, 3, 6, 9

range(-10, -100, -30)
  -10, -40, -70

要以序列的索引來迭代,您可以將 range() 和 len() 組合如下:

>>> a = ['Mary', 'had', 'a', 'little', 'lamb']
>>> for i in range(len(a)):
...     print(i, a[i])
...
0 Mary
1 had
2 a
3 little
4 lamb

然而,在大多數這類情況下,使用 enumerate() 函數比較方便,請參見 循環的技巧 。

如果你只打印 range,會出現奇怪的結果:

>>> print(range(10))
range(0, 10)

range() 所返回的對象在許多方面表現得像一個列表,但實際上卻並不是。此對象會在你迭代它時基於所希望的序列返回連續的項,但它沒有真正生成列表,這樣就能節省空間。

我們說這樣的對象是 可迭代的 ,也就是說,適合作為函數和結構體的參數,這些函數和結構體期望在迭代結束之前可以從中獲取連續的元素。我們已經看到 for 語句就是這樣一個迭代器。函數 list() 是另外一個;它從可迭代對象中創建列表。

>>> list(range(5))
[0, 1, 2, 3, 4]

后面,我們會看到更多返回可迭代對象的函數,和以可迭代對象作為參數的函數。


免責聲明!

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



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