range 函數中步長的理解


  在Python中,range內建函數是非常有用的一個,但是發現對range參數的理解比較含糊,這里做個總結。

  1. range(x): 從0開始,直到x,即區間[0, x)中的整數

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

  2. range(x, y):從x開始,直到y,即區間[x, y)中的整數,注意:x < y,否則range中無元素

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

  造成以上結果的原因在於,range的第三個參數step默認為1,即每次在x起始值上+step,且x + step < y。因此當x = 5,y = 1時,x + 1 = 5 + 1 = 6 > 1 = y, 所以range停止。同理,5 + 1 > 5,range(5, 5)也無輸出結果。

  3. range(x, y, step):從x開始,直到y,步長為step,即 x <= x + n * step < y,其中n為1開始的整數。

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

  因此,在上例中,range(5, 1, -1)依次打印5, 5 + (-1) * 1 = 4, 5 + (-1) * 2 = 3, 5 + (-1) * 3 = 2;而由於5 + 2 > 1,所以range(5, 1, 2)中無結果打印。

  所以,對於第三個參數step,並不可以簡單的理解“負數代表翻轉”

 


免責聲明!

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



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