Range(start, end):為什麼排除結束值?
Python 的 range(start, end) 函數是一個常用的函數使用產生數字序列的實用程式。然而,range() 的一個特殊之處是它排除了最終值。例如,range(1, 11) 返回 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],在 11 處短暫停止。
為什麼會這樣?答案在於 range() 的廣泛用法和程式設計中的常見做法。
1.索引的一致性:
程式設計師通常偏好從零開始的索引,其中序列的第一個元素被引用為索引 0。使用range(0, 10) 將會傳回[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],剛好包含10 個元素,與其長度對齊(len(range(0, 10)) )。
2。循環與迭代:
考慮一個常見的循環結構:
for i in range(len(li)): pass
如果 range() 包含最終值,則此循環將迭代列表 li 的有效索引。程式設計師在指定範圍時可能會忘記從 len(li) 中減去 1,從而導致無效循環。
3.與迭代器的一致性:
在 Python 中,range() 函數充當迭代器,一次產生一個值。如果它包含最終值,則需要額外的檢查或邏輯來終止迭代,從而增加複雜性和潛在的錯誤。
解決包含的需求:
如果您經常發現自己需要包含最終值,您可以建立一個自訂函數來擴展以下功能: range():
def range1(start, end): return range(start, end + 1) print(range1(1, 10)) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
透過了解range() 排除最終值背後的原因並在必要時使用自訂函數,程式設計師可以在他們的Python程式碼中有效地利用這個多功能工具。
以上是為什麼 Python 的 `range(start, end)` 會排除 `end` 值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!