我想知道爲什麼這不會引發一個ValueError:爲什麼在for循環中使用負範圍時Python不會拋出ValueError?
>>> for i in range(-1):
... print "something"
...
>>>
有沒有以這種方式使用該負的參數有什麼用處?
我想知道爲什麼這不會引發一個ValueError:爲什麼在for循環中使用負範圍時Python不會拋出ValueError?
>>> for i in range(-1):
... print "something"
...
>>>
有沒有以這種方式使用該負的參數有什麼用處?
範圍可以接受負一步,也
In [2]: list(range(0, -10, -1))
Out[2]: [0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
且不說負數的正步進範圍。
In [3]: list(range(-9, 1))
Out[3]: [-9, -8, -7, -6, -5, -4, -3, -2, -1, 0]
至於爲什麼它不會對一個負參數版本拋出一個錯誤,我認爲這只是禪
Special cases aren't special enough to break the rules.
默認情況下,range
功能從0開始。此外,該步驟默認爲正1。您僅爲函數(停止點)提供了一個參數,並且該參數爲-1
。因此,它試圖將增量從0到-1。
查看range()
If the start argument is omitted, it defaults to 0.
文檔如果你願意去負,你需要包括start
,stop
和step
值:
range(0, -10, -1)
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
沒有拋出異常,因爲它是按照文檔描述的那樣行事。
'range(-1)'是一個空列表。你*可以*迭代一個空列表,但它不會循環。 – Selcuk 2015-02-11 15:01:51