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]
后面,我們會看到更多返回可迭代對象的函數,和以可迭代對象作為參數的函數。