在循環中存取清單元素時修正索引錯誤
嘗試在循環中使用索引存取清單元素有時會導致錯誤,例如IndexError或TypeError。了解正確的循環結構對於解決這些問題至關重要。
錯誤描述:
考慮以下程式碼:
<code class="python">def sumAnArray(ar): theSum = 0 for i in ar: theSum = theSum + ar[i] return theSum</code>
此程式碼的目的對清單的值求和。但是,它在運行時會引發 IndexError。
迴圈操作:
當可迭代物件(如列表)使用 for 迴圈時,迴圈變數 (i 在case) 表示可迭代的目前元素。在給定的程式碼中,循環迭代 ar 的元素,i 取每個元素的值。
錯誤分析:
在上面的程式碼中,錯誤發生在以下情況:嘗試存取ar[i],它嘗試檢索ar 中對應於i 值的元素。但是,在具有可迭代物件的 for 迴圈中,i 表示元素本身,而不是其索引。如果 i 超出範圍(即大於或等於清單的長度),嘗試直接使用 i 索引 ar 將導致 IndexError。
正確循環:
要解決此錯誤,應修改循環以正確存取清單的元素:
<code class="python">for i in ar: theSum = theSum + i</code>
此版本迭代列表中的元素並將每個元素的值加到總和中,避免使用索引相關錯誤。
替代解決方案:
循環列表元素並按索引訪問它們的另一種方法是使用範圍而不是迭代列表本身:
<code class="python">for i in range(len(ar)): theSum = theSum + ar[i]</code>
此方法可確保i 採用ar 的所有有效索引值,從而防止索引錯誤。
以上是為什麼我的程式碼在對列表元素求和時拋出 IndexError?的詳細內容。更多資訊請關注PHP中文網其他相關文章!