我正在學習 python,我有一個如下所示的小片段:
for i in range(-10, 11, -6):
print(i)
這沒有引發錯誤,也沒有給出輸出。令人驚訝的是,我預計會出現錯誤,因為該停止值11
永遠不會被擊中。任何想法為什么會這樣?
uj5u.com熱心網友回復:
Range 表示不可變的數字序列。
這是range
型別的檔案。
在你的情況下:
- 開始 = -10
- 停止 = 11
- 步長 = -6
對于負步長,范圍的內容仍然由公式 r[i] = start step*i 確定,但約束條件是 i >= 0 和 r[i] > stop。
如果 r[0] 不滿足值約束,則范圍物件將為空。
所以讓我們嘗試為您的案例生成范圍第一個元素
r[0] = -10 -6 * 0
r[0] = -10
但 -10 小于 stop 所以演算法在這里停止產生一個空范圍
>>> range(-10, 11, -6)
[]
所以在你的代碼范圍內將等同于:
for i in []: # empty array, 0 iterations of loop, nothing printed to console
print(i)
并且這段代碼是完全有效的python,“迭代一個空范圍并完成” - 這就是為什么(1)沒有列印為范圍是空的,并且(2)你沒有錯誤,因為代碼是有效的
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/490976.html
上一篇:從第二個到最后一個元素迭代一個串列,然后是第一個元素
下一篇:R:正確使用Break陳述句