我對某個特定用例中range()函數的行爲有些困惑。Python3,範圍(a,b)函數行爲和空列表
當我測試一些使用嵌套FOR循環寫入的代碼時,在某些情況下,某些循環中的語句似乎永遠不會執行。我終於意識到,我在一些情況下,供給範圍()調用與像輸入:
range(i,2) # where i is 2, giving range(2,2)
...它扔了錯誤,但顯然從未執行for循環的內容。在Python3的實施一些閱讀後,我再補充說:「還有:」語句我的循環:
for i in range(a,b): # where a=b, i.e. range(2,2)
[skipped code]
else:
[other code]
...和其他情況下的代碼執行罰款,因爲我想所有可能的迭代器給定的範圍值(已經)已經耗盡,並且for-else的情況被觸發,因爲它被設計爲當這種情況發生時。
從我在range()的文檔中可以看到的,我發現:「如果r [0]不符合值約束,則範圍對象將爲空。 (https://docs.python.org/3/library/stdtypes.html#range)。我不太清楚在這種情況下「價值約束」是什麼,但如果我理解正確,「範圍(a,b)」將返回一個空列表,如果a> = b。
我的問題是,我的理解是否正確關於何時range()返回[]?另外,還有其他種類的範圍(a,b)返回[]的輸入情況,或者我應該注意的其他不明顯的邊界情況行爲?謝謝。
感謝您的概述和示例,這有助於澄清行爲。 –